タイプ
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}}
そして私はこれから高さ
今できる最善の方法は
ListPointPlot3D[data, Filling -> Bottom]
次のようなものを生成します
ポイントが正しい位置にあり、正しい高さにあるが、ポイントではなく正しい高さの長方形(幅1の正方形の底辺)が必要な場合。
助けていただければ幸いです。
コメント
回答
変換data
を WeightedData
オブジェクトに入れ、 Histogram3D
:
wd = WeightedData[data[[All, ;; 2]], data[[All, -1]]]; Histogram3D[wd, {1}, ColorFunction -> "Rainbow"]
ビンの指定を{2}
に変更します:
Histogram3D[wd, {2}, ColorFunction -> "Rainbow"]
重みがゼロのデータ要素を表示するには、iv id = “bf831を置き換えます小さい番号のデータの3番目の列にあるd0198 “>
(たとえば、10^-6
):
wd2 = WeightedData[data[[All, ;; 2]], data[[All, -1]] /. 0 -> 10^-6]; Histogram3D[wd2, {1}, ColorFunction -> "Rainbow"]
回答
ヒストグラムはありませんが、高さが1または合計サンプルサイズにならないため、実際には3D棒グラフがあります。ただし、各ディメンションの値のすべての組み合わせ(2のステップで4から10になる)が利用可能な特定のデータセットでは、DiscretePlot3D
を簡単に使用できます。
DiscretePlot3D[data[[4 (i/2 - 2) + j/2 - 1, 3]], {i, 4, 10, 2}, {j, 4, 10, 2}, ExtentSize -> Full, FillingStyle -> Opacity[1]]
あなたが言及した" gymnastics "を回避する別のアプローチは、スパース配列を使用することです:
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]]
コメント
- いいですね。プロットの適切な形式を生成するには、かなりの体操を行う必要があります…
- もっと運動が必要な場合があります。 ;)
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]