【问题标题】:Plotting 3D bars over a grid in Matlab在 Matlab 中的网格上绘制 3D 条形图
【发布时间】:2018-02-20 22:36:26
【问题描述】:

我有一个矩阵 A,它包含 50 行和 4 列,并且条目用整数填充。我的兴趣是根据这些数据构建一个堆叠的 3D 条形图。但是,使用 bar3(A,'stacked') 创建一行 50 个条形,而我希望将条形绘制在大小为 5(垂直)x 10(水平)的网格的坐标处。因此,该行中的第一个柱将位于位置 (1,1),第二个柱位于 (1,2),第 11 个柱位于 (2,1),依此类推,直到第 50 个柱位于 (5,10) .我似乎在 Matlab 中找不到这样做的方法,这可能吗?

提前谢谢你!

【问题讨论】:

  • 这是个糟糕的主意。 3D 条形图应该是非法的,堆叠条形图也应该是非法的。因为既不能清晰地读取数据点,也不能清楚地读取它们之间的关系。有更好的方法来展示您的数据。

标签: matlab grid reshape stacked


【解决方案1】:

我同意@cris,有更好的方法来表示您的数据。但是,如果您仍想使用 3D 条形图,这样的方法会起作用:

figure
hold on

for i = 1:5
    Ai = A(10*(i-1)+1:10*i,:);
    h = bar3(1:10,Ai,'stacked');

    for ih = 1 :length(h)
        x = get(h(ih), 'Xdata');
        set(h(ih), 'Xdata', x+i-1);
    end

end
view(3)

【讨论】:

  • 非常感谢 Jorge,非常有用。我最终听从了 Cris 的建议并没有使用它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多