【问题标题】:How to set x and y values when using bar3 in Matlab?在 Matlab 中使用 bar3 时如何设置 x 和 y 值?
【发布时间】:2015-05-13 12:33:45
【问题描述】:

快速版

如何在 Matlab 中控制 3-d 条形图的 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 更改标签。我需要更改轴上的实际 ,因为我在同一个图中绘制了多个东西。仅更改(错误)轴刻度的标记方式是不够的。所以这与这样的问题不同:

How can I adjust 3-D bar grouping and y-axis labeling in MATLAB?

我尝试过的其他方法

当我尝试更改 xval 时:

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

这些值被输入了,但实际上显示在错误的轴上,所以看起来 x 和 y 轴是使用 bar3 切换的。另外,无论如何都为时已晚,因为条形图已经用错误的 x 和 y 值绘制,所以我们最终会给空值打勾。

已添加注释

Matlab 技术支持刚刚给我发了电子邮件,让我知道用户贡献的函数 scatterbar3,它可以按照与接受的答案不同的方式执行我想要的操作:

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

【问题讨论】:

  • 我的猜测是,如果您要将很多东西一起绘制,那么可以有一些空的 1:4 值。实际上,您可以调用 axis([xmin xmax ymin ymax zmin zmax]) 来调整绘制的范围。
  • 是的,我希望这是主要问题!
  • 嗯?你能张贴一些你有什么/你想要什么的图片吗?我可能误解了你的问题。
  • Ander:我只想控制 x 和 y 值,就像使用 scatter3 一样。这是主要问题(可以说是“标题”问题)。我将从我的问题中删除一些绒毛,以便更清楚。
  • 顺便提个问题。非常好。

标签: matlab matlab-figure


【解决方案1】:

我找到了一种方法。我给你一段代码,然后你需要“整理”,主要是轴限制和 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,则需要更改代码,但您可以猜到可能性有多大!

【讨论】:

  • 有效!绝妙的把戏。注意修复x刻度(现在只显示5-10),只需添加set(gca,'XTick', xVals)
  • @neuronet 完全正确。我只是不想把所有事情都交给你:P
猜你喜欢
  • 1970-01-01
  • 2019-07-07
  • 2022-09-24
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多