在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]。
注意我不只是想使用XTickLabel
和YTickLabel
来更改标签。 我需要更改轴上的实际值,因为我在同一图中绘制了多个事物。 只改变(错误的)轴标记的方式是不够的。 所以这与这样的问题不同:
如何在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?