在图形刻度中抑制指数格式化

zel*_*lus 13 matlab plot labels number-formatting

勾选大于约10'000的刻度标签,例如格式化为1x10 ^ 4.而指数部分出现在相应的轴上方.这种不当行为在matlab中心也有很好的描述,但没有解决方案.

谢谢你的帮助.


'快速技巧'

set(gca, 'YTickLabel',get(gca,'YTick'))
Run Code Online (Sandbox Code Playgroud)

应用于bar3时无效,如下图所示.

bar3情节失败

Amr*_*mro 8

编辑

根据此技术解决方案页面,格式化刻度标签的推荐方法是这样(您可以使用任何数字格式化函数,如NUM2STR,SPRINTF,MAT2STR或任何其他..)

y = cool(7);
bar(y(:,1)*1e6)
set(gca, 'YTickMode','manual')
set(gca, 'YTickLabel',num2str(get(gca,'YTick')'))
Run Code Online (Sandbox Code Playgroud)

替代文字

然而,当涉及到Z轴时,似乎存在一个错误(标签格式正确,但指数乘数仍因某种原因显示!)

y = cool(7);
bar3(y*1e6, 'detached')
set(gca, 'ZTickMode','manual')
set(gca, 'ZTickLabel',num2str(get(gca,'ZTick')'))
Run Code Online (Sandbox Code Playgroud)

替代文字

最后,还有另一种解决方法,我们用文本对象替换刻度标签(请参阅此技术解决方案页面作为参考):

y = cool(7);
bar3(y*1e6, 'detached')
offset = 0.25; Xl=get(gca,'XLim'); Yl=get(gca,'YLim'); Zt=get(gca,'ZTick');
t = text(Xl(ones(size(Zt))),Yl(ones(size(Zt)))-offset,Zt, num2str(Zt')); %#'
set(t, 'HorizontalAlignment','right', 'VerticalAlignment','Middle')
set(gca, 'ZTickLabel','')
Run Code Online (Sandbox Code Playgroud)

替代文字


Jon*_*nas 1

更好地控制刻度标签并避免指数格式的一种方法是使用文件交换中的TICK2TEXT 。

这是一个例子:

y = cool(7); %# define some data
ah = axes; %# create new axes and remember handle
bar3(ah,y*1E6,'detached'); %# create a 3D bar plot
tick2text(ah, 'ztickoffset' ,-1.15,'zformat', '%5.0f', 'axis','z') %# fix the tick labels
Run Code Online (Sandbox Code Playgroud)