在 Matlab 中的网格上绘制 3D 条
Plotting 3D bars over a grid in Matlab
我有一个矩阵 A,它包含 50 行和 4 列,并且每个条目都用整数填充。我的兴趣是根据这些数据构建堆叠的 3D 条形图。但是,使用 bar3(A,'stacked') 创建一行 50 个条,而我希望将条绘制在大小为 5(垂直)x 10(水平)的网格的坐标处。因此,该行中的第一根柱子位于 (1,1),第二根柱子位于 (1,2),第 11 根柱子位于 (2,1),依此类推,直到第 50 根柱子位于 (5,10) .我似乎找不到在 Matlab 中执行此操作的方法,这可能吗?
提前致谢!
我同意@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)
我有一个矩阵 A,它包含 50 行和 4 列,并且每个条目都用整数填充。我的兴趣是根据这些数据构建堆叠的 3D 条形图。但是,使用 bar3(A,'stacked') 创建一行 50 个条,而我希望将条绘制在大小为 5(垂直)x 10(水平)的网格的坐标处。因此,该行中的第一根柱子位于 (1,1),第二根柱子位于 (1,2),第 11 根柱子位于 (2,1),依此类推,直到第 50 根柱子位于 (5,10) .我似乎找不到在 Matlab 中执行此操作的方法,这可能吗?
提前致谢!
我同意@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)