刻度大于约 10'000 的刻度标签,例如格式化为 1x10^4。而指数部分出现在相应轴的上方。这种不当行为在 matlab 中央也得到了很好的描述,但没有解决方案。
谢谢你的帮助。
“快速技巧”
set(gca, 'YTickLabel',get(gca,'YTick'))
应用于 bar3 时不起作用,如下图所示。
刻度大于约 10'000 的刻度标签,例如格式化为 1x10^4。而指数部分出现在相应轴的上方。这种不当行为在 matlab 中央也得到了很好的描述,但没有解决方案。
谢谢你的帮助。
“快速技巧”
set(gca, 'YTickLabel',get(gca,'YTick'))
应用于 bar3 时不起作用,如下图所示。
编辑
根据这个技术解决方案页面,格式化刻度标签的推荐方法是这样(您可以使用任何数字格式化函数,如 NUM2STR、SPRINTF、MAT2STR 或任何其他......)
y = cool(7);
bar(y(:,1)*1e6)
set(gca, 'YTickMode','manual')
set(gca, 'YTickLabel',num2str(get(gca,'YTick')'))
然而,Z 轴似乎存在一个错误(标签格式正确,但由于某种原因,指数乘数仍然显示!)
y = cool(7);
bar3(y*1e6, 'detached')
set(gca, 'ZTickMode','manual')
set(gca, 'ZTickLabel',num2str(get(gca,'ZTick')'))
最后,还有另一种解决方法,我们将刻度标签替换为文本对象(请参阅此技术解决方案页面作为参考):
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','')
您可以尝试的另一个技巧是在绘制数据之前缩放数据,然后缩放刻度标签以使其看起来是以不同的比例绘制的。您可以使用函数LOG10来帮助您根据绘制的值自动计算适当的比例因子。假设您的数据在变量x
和y
中,您可以试试这个:
scale = 10^floor(log10(max(y))); %# Compute a scaling factor
plot(x,y./scale); %# Plot the scaled data
yTicks = get(gca,'YTick'); %# Get the current tick values
set(gca,'YTickLabel',num2str(scale.*yTicks(:),'%.2f')); %# Change the labels
更好地控制刻度标签并避免指数格式的一种方法是使用文件交换中的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