我想减少以下等高线图中的小数位数。我这样做:
[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)
。
关于Matlab:格式化轮廓标签中的小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30113007/