Matlab:格式化轮廓标签中的小数

时间:2015-05-07 22:55:59

标签: matlab matlab-figure contour

我想在下面的等高线图中减少小数位数。我这样做:

[cc,hh] = contour(X,Y,Z,levels,'LineColor','k');hold on
texth = clabel(cc,hh,'FontSize',8);

它让我获得了第一个带有长标签的轮廓。然后为了减少小数,我做了:

for i = 1:size(texth); textstr=get(texth(i),'String'); textnum=str2double(textstr); textstrnew=sprintf('%0.0f', textnum) ; set(texth(i),'String',textstrnew); end

这给出了第二个情节。如您所见,标签和轮廓线之间存在很大差距,看起来很糟糕。任何想法如何解决这个问题?

enter image description here

1 个答案:

答案 0 :(得分:1)

不是修改结果,而是创建一个具有所需级别的等高线图,因此您不需要欺骗数据。

将等级定义为例如levels=997:1010

然后

contour(X,Y,Z,levels,'LineColor','k','ShowText','on');

将创建包含文本的等高线图,并且等级特别是变量levels中的等级,在本例中为997,998,999,...,1009,1010

如果正如@David建议的那样,你的等级变量已经是一个向量,那么就按照自己的建议将其替换为round(levels)