7

我有两个情节。在第一个图中,y 轴的值上升到 30000。因此,Matlab 用 '3' 和图上方的 'x10^4' 标记轴而不是 '30000'。在第二个图中,y 值一直到 10000。由于这个值太低而无法自动切换到指数格式,它实际上打印了“10000”。

我想知道是否有办法强制指数格式。这将导致与 Matlab 自动生成的格式相同。我之所以问这个问题是因为我已经看到了可以让 Matlab 直接将“10 ^ 3”打印为 Y-label 的解决方案,但我只想让它显示“1”作为标签,并在图上方显示“x10 ^ 3”。

下图显示了合并在一起的不同图,只是为了澄清我的问题。在图像的左半部分,您可以看到如果我使用的值 > 10000,Matlab 会做什么。如果下图显示,这就是我想要为下半部分显示的轴获得的格式。

指数格式与常规格式

4

3 回答 3

3

我来到这里是因为我需要类似的东西,而且我知道现在有一个解决方案。也许从 R2015 及更高版本开始,您可以通过以下方式设置指数:

ax.YAxis.Exponent = 3  % 3 is for example

或者,如果您想要完整的数字:

ax.YAxis.Exponent = 0

Whileax是轴手柄。

于 2018-01-22T17:09:53.117 回答
2

根据一些阅读、测试和属性检查,这似乎是不可能的:

http://www.mathworks.com/matlabcentral/answers/8005-axes-tick-in-scientific-notation

只有在您没有设置 YTickLabel 属性时,科学计数法标签才会自动出现。如果您设置 YTickLabel,则没有(记录的)方法可以让 MATLAB 以相同的方式自动输入指数。

为了解决这个问题,如果你设置了 YTickLabel 并且你想要指数,你需要 text() 你希望它出现的指数。

您可以像这样格式化y轴标签

set(gca,'YTickLabel',sprintf('%3.1f|',get(gca,'ytick')/max(get(gca,'ytick'))

然后使用 TeX 标记 ('$\times10^4$') 添加 x 10^4 以手动获得相同的结果。

于 2012-12-09T05:52:14.720 回答
0

对我来说,使用'$[TeX]$'语法不起作用(R2012a)。相反,texlabel()有效。

但是,Matlab 不允许 TeX 在轴标签中解释(至少不是 2012a,而且 2013a 的帮助似乎并不乐观:例如set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})

text()这是一种解决方法,您可以使用该功能制作自己的标签。

plot(1:9,exp(-[1:9]))
set(gca,'XTick',[1 3 5 7 9],'XTicklabel',[])
arrayfun(@(x)text(x-.1,-.02,texlabel(sprintf('e^%d',x))),[1 5 9],'UniformOutput',false)
于 2013-05-08T22:11:43.520 回答