如何使用所选颜色和格式化标签绘制轮廓

时间:2016-10-30 17:43:36

标签: matlab contour surface

我试图使用我的计算数据绘制轮廓,轮廓标签和颜色有限,如图片顶部面板所示:

here

但我最终得到了一个略有不同的情节(见上图中底部的情节)。 我想用以下三个规范修改我的情节

  1. 限制2或3位小数的轮廓标签
  2. 删除轮廓彼此太近的区域中的绘图标签。
  3. 使用第一张图片中的两种颜色进行绘图
  4. 这是我的代码:

    f=load('fort.15');
    ngridx=180;
    ngridy=180;
    x=f(:,3);
    y=f(:,4);
    z=f(:,5);
    xlin=linspace(min(x),max(x),ngridx);
    ylin=linspace(min(y),max(y),ngridy);
    [X,Y]=meshgrid(xlin,ylin);
    Z=griddata(x,y,z,X,Y,'linear');
    [c,h] = contour(X,Y,Z,20);
    set(h,'LineWidth',2,'LineColor',rgb('SteelBlue'),'ShowText','on',... 
          'LabelSpacing',800 )
    axis([0 6 -5 7])
    

    我不是Matlab的专家。请帮助我找到正确的情节。 我附上了我的数据文件here

1 个答案:

答案 0 :(得分:0)

嗯,我只得到了3个。确定了颜色必须改变的等级(这里是scl),你很高兴:

scl = 6.5; % switch color level;
[c1,h1] = contour(X,Y,Z,scl:max(Z(:)),'Color','r');
hold on 
[c2,h2] = contour(X,Y,Z,min(Z(:)):scl,'Color','b');
clabel(c2,h2);
axis([0 6 -5 7])

这里的想法是使用hold on命令从两个轮廓对象中提取你的情节。向量scl:max(Z(:))定义要在第一个轮廓中显示的级别,并获得红色而没有标签。类似的逻辑适用于边缘轮廓。 如果您想要标记一些红色轮廓,或者从蓝色轮廓中删除标签,则需要将h2函数中的clabel替换为您想要标注的级别的向量。如果您在评论中具体说明,我会更新我的答案。

contour

改变标签的格式可能不知怎的可能,但它真的不是微不足道的,所以我现在离开了。