matlab 等值线间距问题

[c,gca]=contour(lon,depth,Profile,'Color','k','LineWidth',1.2);set(gca,'ShowText','on... [c,gca] = contour(lon,depth

,Profile,'Color','k','LineWidth',1.2);
set(gca,'ShowText','on','TextStep',get(gca,'LevelStep')*0.02);
这里的LevelStep是怎么控制等值线间距的,为什么用0.5和0.02没有差别呢,想把等值线画的密一点怎么办
求高手解决
展开
 我来答
tianxiawulang
2015-09-01 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2669万
展开全部

1、首先提个建议,gca是一个比较常用的函数,用于获取当前坐标系句柄,最好不要用它当变量名来用。

 

2、LevelStep属性应当是一个标量,可用于控制等值线的间距(前提是LevelStepMode属性为auto)。但题主设置的属性是TextStep而非LevelStep。

 

TextStep属性同样应当为标量,其作用是决定在哪些等值线上显示数据标签。需要注意的是,在哪些线上显示数据标签,不仅取决于TextStep,同时还与LevelStep(或LevelList)有关,也就是说,只有由LevelStep(或LevelList)确定存在等值线的位置,才可能显示数据标签。

 

举例说,题主设置的TextStep是LevelStep的0.5或0.02倍,刚好能被1整除,所以结果是每条线上都会显示数据标签;如果把0.5该成0.4,题主再看看是什么情况?

 

要想【把等值线画的密一点】,很简单,应该修改LevelStep而非属性TextStep,例如:

[x y z]=peaks;
[c,h] = contour(x,y,z,'Color','k','LineWidth',1.2);
set(h,'ShowText','on','LevelStep',get(h,'LevelStep')*0.2);

 

3、顺便说一下刚注意到的兼容性问题。我在2008a上用上面的命令,发现不能修改等值线的颜色,但在2015a上没问题。下面是一点分析,仅作为个人的一点记录,没兴趣不必看。

 

分析了一下2008a中相关的代码,注意到其中有提到【Color is hidden because we want people to start using LineColor】,也就是,对于contour这种组合图形对象,Color属性是隐藏的,因开发者希望用户使用LineColor来代替它。至于2015a,该版本contour的实现手段完全不同,里面调用了contourHGUsingMATLABClasses函数,但这是一个p文件,无法进一步分析。至于是从哪个版本改的,限于时间精力,就不深究了。

百度网友3a512da
2015-08-31 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:63
采纳率:0%
帮助的人:46.2万
展开全部

clear

clc

close all

A=[0 0 0.35

0 30 0.36

0 60 0.4

0 90 0.4

0 120 0.45

0 135 0.47

0 150 0.48

0 165 0.51

0 180 0.53

0 210 0.57

0 240 0.6

0 255 0.63

0 270 0.69

0 285 0.76

0 300 0.82

4 0 0.41

4 30 0.43

4 60 0.44

4 90 0.52

4 120 0.53

4 135 0.59

4 150 0.61

4 165 0.65

4 180 0.75

4 210 0.88

4 240 0.92

4 255 0.96

4 270 1

4 285 1.1

4 300 1.2

8 0 0.5

8 30 0.51

8 60 0.53

8 90 0.67

8 120 0.64

8 135 0.68

8 150 0.85

8 165 1.02

8 180 1.13

8 210 1.23

8 240 1.25

8 255 1.29

8 270 1.3

8 285 1.35

8 300 1.5];

x=A(:,1);

y=A(:,2);

z=A(:,3);

xmin=min(x); xmax=max(x);

ymin=min(y); ymax=max(y);

[xx,yy]=meshgrid(linspace(xmin,xmax,30),linspace(ymin,ymax,30));

zz=griddata(x,y,z,xx,yy,'v4');

v=floor(min(zz)):0.05:ceil(max(zz)); % 坐标值标注范围及间距

[c,h]=contour(xx,yy,zz,v);

clabel(c,h,'LabelSpacing',500) 

x=A(:,1);

y=A(:,2);

z=A(:,3);

xmin=min(x); xmax=max(x);

ymin=min(y); ymax=max(y);

[xx,yy]=meshgrid(linspace(xmin,xmax,20),linspace(ymin,ymax,20));

zz=griddata(x,y,z,xx,yy,'v4'); 

figure

v=floor(min(zz)):0.05:ceil(max(zz)); % 坐标值标注范围及间距

[c,h]=contour(xx,yy,zz,v);

clabel(c,h,'LabelSpacing',500) 

colormap('gray')

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式