3D-histogrammi erillisistä tiedoista

Minulla on joitain (erillisiä) tietoja, joiden tyyppi on $ \ {x_i, y_i, z_i \} $

data={{4, 4, 0.6570}, {6, 4, 0.8240}, {8, 4, 0.8930}, {10, 4, 0.9330},{4,6, 0.2780}, {6,6,0.5660}, {8, 6, 0.7460}, {10, 6, 0.8320}, {4, 8,0}, {6, 8, 0.2620}, {8, 8, 0.5100}, {10, 8, 0.6100}, {4,10, 0}, {6,10, 0.04900}, {8, 10, 0.2370}, {10, 10, 0.3940}} 

ja aion tehdä tästä 3D-histogrammin, jossa on suorakulmioita, joiden korkeus on $ z_i $ ja neliönmuotoinen pohja, joka sijaitsee tasossa paikassa $ x_i, y_i $ . Tämä oli aiemmin mahdollista käyttämällä` `GeneralizedBarChart3D ", mutta tämä on korvattu RectangleChart3D: llä, enkä voi saada sitä toimimaan.

Paras, mitä voin tehdä tällä hetkellä, on

ListPointPlot3D[data, Filling -> Bottom] 

joka tuottaa jotain

kirjoita kuvan kuvaus tähän

missä pisteet ovat oikeassa paikassa ja oikeassa korkeudessa, mutta haluan, että suorakulmio (neliön muotoinen leveys 1) on oikean korkeus eikä piste.

Kaikki apu olisi tervetullut.

Kommentit

  • Histogram3D[Function[y, Table[{y[[1]], y[[2]]}, y[[3]]]] /@ (Function[x, {x[[1]], x[[2]], x[[3]]*10000}] /@ data)]
  • Voit käyttää ListPlot3D: tä 0-interpolointijärjestyksellä: ListPlot3D[data, Filling -> Bottom, InterpolationOrder -> 0]
  • Tietopisteen {4, 4, 0.6570} huomioon ottamiseksi lisäämään pisteen {4,4} 0.6570 * 10000 = 6570 kertaa (väliaikaiseksi taulukoksi). Toista tämä kaikille pisteille ja piirrä sitten tämän väliaikaisen taulukon histogrammi (3D) (joka sisältää {4,4} toistuu 6570 kertaa).
  • Rakennus @Carl ' s kommentti ListPlot3D[data, Filling -> Bottom, InterpolationOrder -> 0, PlotRange -> {{3, 11}, {3, 11}}, ColorFunction -> "SouthwestColors", Mesh -> None]
  • @HarshalGajjar Kiitos … Jotenkin toiminnallisuus " GeneralizedBarChart3D " ei oikeastaan korvattu.

Vastaa

Muunna data WeightedData -objektiksi ja käytä sitä Histogram3D :

wd = WeightedData[data[[All, ;; 2]], data[[All, -1]]]; Histogram3D[wd, {1}, ColorFunction -> "Rainbow"] 

kirjoita kuvan kuvaus tähän

Muuta roskakorin määrittelyksi {2}:

Histogram3D[wd, {2}, ColorFunction -> "Rainbow"] 

kirjoita kuvan kuvaus tähän

Jos haluat näyttää nollapainoiset tietoelementit, korvaa s kolmannessa tietosarakkeessa, jossa on pieni numero (esimerkiksi 10^-6):

wd2 = WeightedData[data[[All, ;; 2]], data[[All, -1]] /. 0 -> 10^-6]; Histogram3D[wd2, {1}, ColorFunction -> "Rainbow"] 

kirjoita kuvan kuvaus tähän

Vastaa

Sinulla ei ole histogrammia, mutta todella 3D-pylväskaavio, koska korkeudet eivät ole yhtä tai kokonaisnäytteen kokoa. Mutta tietyssä tietojoukossa, jossa kaikki ulottuvuuksien arvoyhdistelmät ovat käytettävissä (4: stä 10: een 2: n vaiheissa), voidaan helposti käyttää DiscretePlot3D:

DiscretePlot3D[data[[4 (i/2 - 2) + j/2 - 1, 3]], {i, 4, 10, 2}, {j, 4, 10, 2}, ExtentSize -> Full, FillingStyle -> Opacity[1]] 

3D-pylväskaavio

Vaihtoehtoinen lähestymistapa, joka välttää mainitsemasi " voimistelun ", on käyttää harvaa taulukkoa:

data = {{4, 4, 0.6570}, {6, 4, 0.8240}, {8, 4, 0.8930}, {10, 4, 0.9330}, {4, 6, 0.2780}, {6, 6, 0.5660}, {8, 6, 0.7460}, {10, 6, 0.8320}, {4, 8, 0}, {6, 8, 0.2620}, {8, 8, 0.5100}, {10, 8, 0.6100}, {4, 10, 0}, {6, 10, 0.04900}, {8, 10, 0.2370}, {10, 10, 0.3940}} sa = SparseArray[{#[[1]], #[[2]]} -> #[[3]] & /@ data] DiscretePlot3D[sa[[i, j]], {i, 4, 10, 2}, {j, 4, 10, 2}, ExtentSize -> Full, FillingStyle -> Opacity[1]] 

3D-pylväsdiagrammin vaihtoehtoinen lähestymistapa harvalla taulukolla

Kommentit

  • Hienoa. Sinun on tehtävä melko vähän voimistelua, jotta voit luoda oikean muodon juonelle …
  • Ehkä tarvitset enemmän liikuntaa. 😉

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *