删除科学计数法但在 Matlab 刻度标签中四舍五入

Removing scientific notation but with rounding in Matlab tick labels

我正在从一个生成向量的循环中以非常小的比例绘图,data。无论如何,例如,YTickLabel 自动采用“6x10-3”格式。

data = [0.0004578945622489441 0.00154798436685536652442 0.005987463212456878422336324 0.003651558742652333624455];
plot(data)

我知道我可以使用以下方法来显示完整的刻度标签:

yt = get(gca,'YTick');
set(gca,'YTickLabel', sprintf('%.4f|',yt))

但是,因为这些数字是从我的循环中生成的,所以它们很长(~20 位数字),所以这会完整显示它们。我需要以某种方式四舍五入吗? (无需手动使用 YTickLabel = {'0.0001', '0.0002'}; ... 等)

以下对我有用:

set(gca, 'YTickLabel', get(gca, 'YTick'))

在 Matlab R2014b 中你也可以使用

ax = gca;
ax.YTickLabel = ax.YTick;

无论哪种方式,这样做都是将 YTick 值分配给 YTickLabel。这以某种方式阻止了科学记数法。