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

快速版本

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

细节

假设我们有一个10 x 20的数据矩阵,我们用bar3绘制它,我们想要设置x和y值。 例如:

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

有没有办法将它喂给yVals? 否则,y轴始终默认为[1:N]。

注意我不只是想使用XTickLabelYTickLabel来更改标签。 我需要更改轴上的实际值,因为我在同一图中绘制了多个事物。 只改变(错误的)轴标记的方式是不够的。 所以这与这样的问题不同:

如何在MATLAB中调整三维条形码组和y轴标签?

其他事情我已经尝试过

当我尝试更改xvals时:

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

这些值被带入,但实际上显示在错误的轴上,所以看起来x轴和y轴使用bar3进行切换。 另外,无论如何,已经太晚了,因为条形图已经绘制了错误的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的间隔,你需要改变代码,但你可能猜到可能!

链接地址: http://www.djcxy.com/p/25251.html

上一篇: How to set x and y values when using bar3 in Matlab?

下一篇: How to assign a value to a django form field in the template?