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

Matlab: Format the decimals in contour labels

我想削减以下等高线图中的小数位数。我愿意:

[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

这给出了第二个情节。如您所见,标签和轮廓线之间有很大的差距,看起来很糟糕。有什么解决办法吗?

与其修改结果,不如创建具有所需水平的等高线图,这样您就不需要欺骗数据。

定义级别,例如levels=997:1010

然后

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

将创建一个等高线图,其中包含文本,级别具体为变量 levels 中的级别,在本例中为 997,998,999,...,1009,1010

如果正如@David 所建议的那样,您的 levels 变量已经是一个向量,则按照他自己的建议将其替换为 round(levels)