gpt4 book ai didi

matlab - 如何在 MATLAB 中调整 3-D 条形分组和 y 轴标签?

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:08 27 4
gpt4 key购买 nike

我有一个像这样的 3D 图:

alt text

在图的 y 轴上,每组三个条代表相同的参数:x1、x2、x3。我希望每组三个条在 y 轴上有一个间距,以便更清楚地表明这些条指的是相同的参数。同时,我想为每组三个条形在 y 轴上放置一个标签。例如,需要以下 y 轴标签布局:

x1 x2 x3   x1 x2 x3   x1 x2 x3
grid1 grid2 grid3

非常欢迎任何建议!下面给出了我用来绘制条形图的代码:

Z = rand(9,5);
h = bar3(Z);
[r c] = size(Z);

zdata = [];
for i = 1:c
zdata = [];
for j = 1:r
zdata = [zdata; ones(6,4)*Z(j,i)];
end
set(h(i),'Cdata',zdata)
end
colormap
colorbar
set(gca,'YTickLabel',['x1';'x2';'x3';'x1';'x2';'x3';'x1';'x2';'x3']);
view([-64 44]);

最佳答案

您可以通过为 bar3 指定额外的输入来在您的条形组之间添加间距指示沿 y 轴放置条柱的位置。您还可以使用函数 text 在轴上绘制其他文本。 :

Z = rand(9, 5);              % Some random sample data
[r, c] = size(Z); % Size of Z
Y = [1 2 3 5 6 7 9 10 11]; % The positions of bars along the y axis
C = mat2cell(kron(Z, ones(6, 4)), 6*r, 4.*ones(1, c)).'; %' Color data for Z

hBar = bar3(Y, Z); % Create the bar graph
set(hBar, {'CData'}, C); % Add the color data
set(gca, 'YTickLabel', {'x1' 'x2' 'x3'}); % Modify the y axis tick labels
view(-70, 30); % Change the camera view
colorbar; % Add the color bar
text(-2, 2, 'grid1'); % Add "grid1" text
text(-2, 6, 'grid2'); % Add "grid2" text
text(-2, 10, 'grid3'); % Add "grid3" text

enter image description here

请注意,您可能需要调整文本对象的 x 和 y 值,以使其在您选择的给定相机 View 中呈现在您想要的位置。

编辑:

如果您还想在每个条形图上方显示值,可以通过在上面的代码中添加以下内容来实现:

hText = text(kron((1:c).', ones(r, 1)), ...    %' Column of x values
repmat(Y(:), c, 1), ... % Column of y values
Z(:)+0.05, ... % Column of z values
num2str(Z(:)), ... % Text strings
'HorizontalAlignment', 'center'); % Center the strings

应该指出的是,绘制这么多的文本会变得有点困惑,因为一些文本会重叠或隐藏在栏后面。文本也有点多余,因为条形图的颜色实际上是为了显示值。

关于matlab - 如何在 MATLAB 中调整 3-D 条形分组和 y 轴标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3601434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com