在绘图中重新调整Y轴刻度

3
我正在尝试调整y轴,将其范围更改为[0 2.5],并显示必须乘以1000的因子。
显然,使用ylim=([0 25])设置限制是行不通的,我找不到方法来实现。

image

使用来绘图:
AveTime = 1.0e+03 * [0.0020, 0.0291, 0.1279, 0.3061, 2.0599];
STDtime = [0.0519, 0.0117, 0.0166, 0.0071, 0.0165];
errorbar([10,25,50,75,100], AveTime, STDtime);

2
你最好的选择是将Y值除以1000,绘制它们,然后在轴标签中指示(可以使用ylabel)。注意1:在某些情况下(例如时间单位),您可以在标记单位时简单地使用ms而不是s(或相关子单位)。注意2:你是不是想说一个范围[0 2.5](而不是25作为高限)? - Hoki
@Hoki,这实际上是个好主意。是的,我复制和粘贴时错过了“.”。非常感谢! - Tony
你可以将其更改为[0 2.5],但你打算如何显示“*刻度必须乘以1000的因子。”科学计数法? - Sardar Usama
@SardarUsama 在 Y 轴上,我可以标注为“时间(K秒)”。 - Tony
2个回答

5
我相信这是您需要的,它适用于Matlab版本>=2014b:
ax = gca;
ax.YAxis.Exponent = 3;

这里有一个代码示例:
clear;
close all;
clc;

x=1:10:1000;
y=3*x;
plot(x,y);
ax = gca;
ax.YAxis.Exponent = 3;

同时,这个情节:

enter image description here


4
比起修改数据或刻度标签,这种方法更加整洁。你应该明确指出它仅适用于HG2,因此仅适用于Matlab版本> = 2014b。 - Hoki

3
这里有一个解决方法:
获取YTick,将其除以1000,并将结果设置为YTickLabel
set(gca,'YTickLabel',get(gca,'YTick')/1000);

在MATLAB R2014b或之后的版本中,您还可以使用以下方法:

ax=gca;
ax.YTickLabel= ax.YTick/1000;

不足之处在于,正如Hoki在评论中提到的那样:

这很好,但仅适用于图形的最终呈现(如果您只想查看/打印它)。一旦您覆盖YTickLabel,它们的模式从auto更改为manual,并且任何缩放/平移或轴限制的修改都将保留现有的刻度标签,这些标签可能在图形修改后已过时。


这很好,但仅适用于图形的最终渲染(如果您只想查看/打印它)。一旦您覆盖YTickLabel,它们的模式将从“自动”更改为“手动”,并且任何缩放/平移或轴限制的修改都将保留现有的刻度标签,这些标签可能在图形修改后已过时。 - Hoki
@Hoki同意了:/ 你有什么建议?我最初建议使用科学计数法。 - Sardar Usama
@SardarUsama。我没有更多的建议了。我们的两个技巧都只是解决方法(因为旧版Matlab中甚至不存在该功能),所以它们也有缺点,一些元素必须由用户管理。David的答案实际上是我会使用的,因为它是内置的。 - Hoki
@Hoki 我同意。但是不足的是,它没有文档记录。 - Sardar Usama
@SardarUsama。我之前也是这么想的,但实际上它已经有文档记录了:NumericRuler 属性 - Hoki
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接