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
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
Vastaa
Muunna data
WeightedData
-objektiksi ja käytä sitä Histogram3D
:
wd = WeightedData[data[[All, ;; 2]], data[[All, -1]]]; Histogram3D[wd, {1}, ColorFunction -> "Rainbow"]
Muuta roskakorin määrittelyksi {2}
:
Histogram3D[wd, {2}, ColorFunction -> "Rainbow"]
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"]
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]]
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]]
Kommentit
- Hienoa. Sinun on tehtävä melko vähän voimistelua, jotta voit luoda oikean muodon juonelle …
- Ehkä tarvitset enemmän liikuntaa. 😉
Histogram3D[Function[y, Table[{y[[1]], y[[2]]}, y[[3]]]] /@ (Function[x, {x[[1]], x[[2]], x[[3]]*10000}] /@ data)]
ListPlot3D[data, Filling -> Bottom, InterpolationOrder -> 0]
ListPlot3D[data, Filling -> Bottom, InterpolationOrder -> 0, PlotRange -> {{3, 11}, {3, 11}}, ColorFunction -> "SouthwestColors", Mesh -> None]