MATLAB中的轴标签用于高精度值

时间:2016-09-06 00:24:44

标签: matlab plot axis-labels

我试图在MATLAB中绘制一个数据数组,如下所示:

ans = [8.1, 8.1+(10^-11) , 8.1+2*(10^-11) , 8.1+3*(10^-11)]
labels = [8.1, 8.1+(10^-11) , 8.1+2*(10^-11) , 8.1+3*(10^-11)]
plot([1,2,3,4],ans)

上面的代码产生了这个: -

plot

问题是Y轴显示所有数据点的相同值/数字/标签。如何设置绘图以更精确地显示这些标签? (例如8.18.1+10^-11,...或8.10000000001

我尝试了下面的命令,但没有帮助。

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

有人可以帮助改善这个情节,以反映数据点之间的差异吗?

1 个答案:

答案 0 :(得分:1)

您可以在Matlab中手动控制Y轴标签的格式。 因此,以下代码适用于高于Matlab2015b的版本。

res = [8.1, 8.1+(10^-11) , 8.1+2*(10^-11) , 8.1+3*(10^-11)];
plot([1,2,3,4],res);
ay=gca;
ay.YAxis.TickLabelFormat = '%.12f';

如果您想手动控制版本中Y轴刻度标签的格式,您应该做类似的事情

res = [8.1, 8.1+(10^-11) , 8.1+2*(10^-11) , 8.1+3*(10^-11)];
plot([1,2,3,4],res);
ay=gca;
currTicks=get(ay,'YTick');
for i=1:size(currTicks,2)
    newTickLabels(i,1)=cellstr(sprintf('%.12f',currTicks(i)));
end
set(ay,'YTickLabel',newTickLabels);

我没有在Matlab2014b上测试这段代码,但是我没有看到它缺少的任何功能(至少据我所知)。

在Matlab 2016a中,没有问题,开箱即用#34;通过复制和粘贴代码。