繁体   English   中英

在Matlab中使用bar3时如何设置x和y值?

[英]How to set x and y values when using bar3 in Matlab?

快速版本

如何在Matlab中控制3维条形图的x和y值?

细节

假设我们有一个10 x 20的数据矩阵,并使用bar3对其进行bar3 ,并且我们想要设置x和y值。 例如:

foodat = rand(10,20);
xVals = [5:14];
yVals = [-3:16];
bar3(xVals, foodat);
xlabel('x'); ylabel('y');

有没有办法也向它提供yVal? 否则,y轴始终默认为[1:N]。

注意我不只是想使用XTickLabelYTickLabel更改标签 我需要更改轴上的实际 ,因为我在同一张图中绘制了许多东西。 仅更改(错误的)轴刻度标记的方式是不够的。 因此,这不同于以下问题:

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

我尝试过的其他东西

当我尝试使用以下方法更改xvals时:

set(gca,'XTick', xVals)
set(gca,'YTick', yVals)

值已被接受,但实际上显示在错误的轴上,因此似乎使用bar3切换了x和y轴。 另外,无论如何都为时已晚,因为条形图已经使用错误的x值和y值进行了绘制,因此我们最终会给空值打勾。

注意已添加

Matlab技术支持刚刚通过电子邮件发送给我,让我了解了用户贡献的功能scatterbar3 ,它以与接受的答案不同的方式实现了我想要的功能:

http://www.mathworks.com/matlabcentral/fileexchange/1420-scatterbar3

我找到了一种方法。 麻烦给您一段代码,然后您需要“整理”,主要是轴限制和Xticks,因为bar3确实在其中设置了Xticks,因此,如果您想要其他,则需要自己手动设置它们。

因此,这里的技巧是从bar3句柄获取Xdata。 这里的问题是,似乎数据的每一行都有一个句柄,因此您需要为它们中的每一个进行迭代。 这是当前输出的代码:

foodat = rand(20,10);
xVals = [5:14];
yVals = [-3:16];


% The values of Y are OK if called like this.
subplot(121)
bar3(yVals, foodat); 

subplot(122)
h=bar3(yVals, foodat); 
Xdat=get(h,'XData');
axis tight
% Widdth of barplots is 0.8
for ii=1:length(Xdat)
    Xdat{ii}=Xdat{ii}+(min(xVals(:))-1)*ones(size(Xdat{ii}));
    set(h(ii),'XData',Xdat{ii});
end



axis([(min(xVals(:))-0.5) (max(xVals(:))+0.5) min(yVals(:))-0.5, max(yVals(:))+0.5]) 

在此处输入图片说明

注意:Y看起来有所不同,但没有什么不同。

如您所见,X值就是您想要的值。 如果您希望间隔除1以外的其他大小,则需要更改代码,但您可以猜测可能的大小!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM