MATLAB等高线图设置问题求助
最近我编写了一个绘制等高线图的小程序,源代码如下:clc;clear
A=[...
0.000113 0.000113 -951.390615
0.000887 0.000113 532.482376
0.000887 0.000887 422.830376
0.000113 0.000887 176.413969
0.000500 0.000113 -687.738275
0.000887 0.000500 405.710453
0.000500 0.000887 224.166964
0.000113 0.000500 -500.895672
......
];
=meshgrid(0:0.001:0.02,0:0.0005:0.01);
z=griddata(A(:,1),A(:,2),A(:,3),x,y,'v4');
colormap()
=contourf(x,y,z,20,'LineWidth',2);
set(gca,'linewidth',2,'fontsize',15,'fontweight','bold');
clabel(c,h,'fontsize',15,'fontweight','bold');
xlabel('x/m','fontweight','bold','fontsize',16);
ylabel('y/m','fontweight','bold','fontsize',16);
axis 'square';
box on;
maximum=A(1,3);
for i=2:1:1800;
if A(i,3)>maximum;
maximum=A(i,3);
end;
end;
minimum=A(1,3);
for i=2:1:1800;
if A(i,3)<minimum;
minimum=A(i,3);
end;
end;
string=['The maximum/minimum normalized σ(eq) is ' num2str(maximum,3) '/' num2str(minimum,3)];
gtext(string,'fontsize',16,'fontweight','bold')
绘制的结果如附图所示。这里的问题是,在等高线上标注数值的时候,MATLAB默认到小数点后面4位左右,我只想显示小数点后面2位。另外,在标注数值的地方能不能把等高线擦除,这样线就不会和数值交叉了?请问,这些可以实现吗?希望各位大侠不吝赐教,小弟感激不尽!
怎么没有哪位哥会呀? 本帖最后由 ChaChing 于 2011-7-15 00:31 编辑
下午有小试一下, 还没试成!
还有正事得忙的, 就先说说想法, LZ试先
1.LZ附图好像不同!?
2.好像直接使用contour即可有"等高线擦除"! 使用contourf再colormap()好像不必要
3.小数点位数问题, 试试LevelList/TextList两属性的更动(set/get)
希望方向是对的 回复 3 # ChaChing 的帖子
首先谢谢ChaChing的热心解答
1、源程序数据太多,我只给出了前面几行,所以出现了“附图”好像不同的问题哈
2、我用contour函数的时候,运行出错,显示Attempt to execute SCRIPT contour as a function. 是不是因为我的z不是x和y的规则函数? 附上我的源程序txt文件。
我通过使用LevelList命令,可以控制标注的数值范围和有效位数,但是还是没有解决如何在标注数值的地方擦除等值线。我尝试使用BackgroundColor命令讲标注背景置成白色,可以起到擦除等高线的作用,但是在标注多的地方互相重叠,效果不好。请问有没有更加好的解决方法呢?另外,为什么我的contour命令无法使用呢
回复 4 # sunhu2003 的帖子
针对"Attempt to execute SCRIPT contour as a function",
建议使用which contour -all检查下是否有自订m file!?
页:
[1]