我有一个矩阵{{2, 1, 2, 2, 1}, {1, 3, 0, 1, 2}, {3, 3, 0, 3, 1}, {1, 1, 2, 1, 1}}
,我想生成一个3d图,例如总共有4 * 5 = 20个条。
在小方块(1,1)处有一个高度为2的条形(即在xy平面上由点{{0,0},{0,1},{1,1}形成的方形,{1,0}}),
另一个高度为1的条形,基于小方形(1,2)(即xy平面上由点{{0,1},{0,2},{1,2},{形成的方形} 1,0}}),
...
另一个高度为3的条形,基于小方形(2,2)(即在xy平面上由点{{1,1},{2,1},{2,2}形成的方形,{ 1,2}})
...
另一个高度为1的条形基于小方形(4,5)(即xy平面上由点{{3,4},{4,4},{4,5}形成的方形, {3,5}})
我找不到一个简单的方法来做到这一点。非常感谢你的帮助!
答案 0 :(得分:4)
你想要的是BarChart3D
。
注意,此功能有两种形式:
BarCharts
包中有BarChart3D
。此功能可以实现您想要的功能,但在Mathematica 7 +。BarChart3D
(仅限Mathematica 7+),它也可以执行您想要的操作,但需要传递选项ChartStyle -> "Grid"
以显示您想要的结果。 以下是这两个示例代码:
<<BarCharts`;
data = {{2, 1, 2, 2, 1}, {1, 3, 0, 1, 2}, {3, 3, 0, 3, 1}, {1, 1, 2, 1, 1}};
BarChart3D[data]
data = {{2, 1, 2, 2, 1}, {1, 3, 0, 1, 2}, {3, 3, 0, 3, 1}, {1, 1, 2, 1, 1}};
BarChart3D[data, ChartLayout -> "Grid"]
答案 1 :(得分:3)
data = {{2,1,2,2,1}, {1,3,0,1,2}, {3,3,0,3,1}, {1,1,2,1,1}};
BarChart3D[data, ChartLayout -> "Grid", BarSpacing -> 0]
修改强>
在wiki之后更新 - 指定问题:
BarChart3D[data, ChartLayout -> "Grid", BarSpacing -> {0, 0},
LabelingFunction -> (Row[{#1, Reverse[#2 - 1], Reverse[#2]}] &),
AxesLabel -> {"x", "y", "z"}]
这里x和y间距都消失了。将光标设置在给定栏上,得到z{x_min,y_min}{x_max,y_max}
,位于顶部红色即2{4,1}{5,2}