$ \ {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}}
그리고 저는 이로부터 높이가 $ z_i $ 및 $ x_i, y_i $ 위치에있는 평면에있는 정사각형베이스. 이것은“GeneralizedBarChart3D를 사용하여 가능했습니다. "하지만 이것은 RectangleChart3D로 대체되어 작동하지 않습니다.
지금 할 수있는 최선은
ListPointPlot3D[data, Filling -> Bottom]
다음과 같은 결과물 생성
포인트가 올바른 위치와 높이에 있지만, 포인트가 아닌 올바른 높이의 사각형 (너비 1의 정사각형베이스)을 원합니다.
어떤 도움을 주시면 감사하겠습니다.
댓글
h3>
답변
를 WeightedData
개체로 변환하고 Histogram3D
:
wd = WeightedData[data[[All, ;; 2]], data[[All, -1]]]; Histogram3D[wd, {1}, ColorFunction -> "Rainbow"]
빈 사양을 {2}
로 변경 :
Histogram3D[wd, {2}, ColorFunction -> "Rainbow"]
가중치가 0 인 데이터 요소를 표시하려면 데이터의 세 번째 열에 작은 숫자 (예 : 10^-6
) :
wd2 = WeightedData[data[[All, ;; 2]], data[[All, -1]] /. 0 -> 10^-6]; Histogram3D[wd2, {1}, ColorFunction -> "Rainbow"]
답변
히스토그램은 없지만 실제로는 3D 막대 차트가 있습니다. 높이의 합이 1 또는 전체 샘플 크기가 아니기 때문입니다. 그러나 각 측정 기준에 대한 모든 값 조합 (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]]
당신이 언급 한 " 체조 "를 피하는 다른 접근 방식은 희소 배열을 사용하는 것입니다.
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]