matlab里面mesh绘图,如何改变指定区域的颜色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab里面mesh绘图,如何改变指定区域的颜色相关的知识,希望对你有一定的参考价值。

比如绘制了一个x,y,z上的曲面,它本身是有颜色的,我想把x[10,50] y[40,50]这块区域的颜色改成指定的颜色,怎么做,谢谢

clear all
[X,Y] = meshgrid(-3:.0625:3);
Z = peaks(X,Y);%生成数据z
[x,y]=meshgrid(1:97);%为了举例方便生成坐标
figure(1)
mesh(x,y,Z);
colorbar


xR=[10,50];%设置x范围
yR=[40,50];%设置y范围

z1=Z.*(x>=xR(1)&x<=xR(2))&(y>=yR(1)&y<=yR(2));%为取出设定范围数据重新赋值而得到逻辑数组
z2=Z;%为不覆盖原始Z,新建变量
z2(z1(:)==1)=-5;%设定范围改为蓝色
%对取出范围内的数据重新赋值,生成用于着色的数组
%由于mesh函数不管怎样都只能用同一个colormap,所以你能改变的颜色必须在你使用的colormap中
%在figure(1)中的colorbar中读取颜色对应的值,可以大约的估计,6,3,-1,-5可以对应红,黄,孔雀蓝,蓝色。
%如果你要改变的颜色不在你所用的colormap中,那你只能编辑colormap了。例如黑色,不在jet中,你就要自己编辑了。


figure(2)
mesh(x,y,Z,z2);
colorbar

参考技术A

将showtime_97的代码重写一遍以清晰地浏览:

clear all
[X,Y] = meshgrid(-3:.0625:3);
Z = peaks(X,Y);             %生成数据Z
[x,y]=meshgrid(1:97);       %为了举例方便生成坐标
figure(1)
mesh(x,y,Z);
colorbar
 
xR=[10,50];                 %设置x范围
yR=[40,50];                 %设置y范围
z1=Z.*(    (x>=xR(1)&x<=xR(2)) & (y>=yR(1)&y<=yR(2))    );  %布尔运算,为取出设定范围数据重新赋值而得到逻辑数组
z2=Z;                       %为不覆盖原始Z,新建变量z2
z2(z1(:)~=0)=-5;            %将设定范围内的数据改为蓝色。在figure(1)中的colorbar中读取颜色对应的值,可以大约的估计,6,3,-1,-5可以对应红,黄,孔雀蓝,蓝色,,蓝色即对应-5。由于mesh函数不管怎样都只能用同一个colormap,所以你能改变的颜色必须在你使用的colormap中。如果你要改变的颜色不在你所用的colormap中,那你只能编辑colormap了。例如黑色,不在jet中,你就要自己编辑了。
 
figure(2)
mesh(x,y,Z,z2);             %z2为颜色数据
colorbar

Matlab中图片保存的5种方法

matlab的绘图和可视化能力是不用多说的,可以说在业内是家喻户晓的。
Matlab提供了丰富的绘图函数,比如ez**系类的简易绘图函数,surf、mesh系类的数值绘图函数等几十个。另外其他专业工具箱也提供了专业绘图函数,这些值得大家深入学习好久。

今天我只是讨论下如何保存这些由Matlab绘制出来的图像呢?当然借助第三方截图软件,就算了!

1、使用imwrite 函数

如图像是img,则可以使用 imwrite(img,‘result.jpg‘); 这种方法保存图像大小和显示的大小事一样的。下面几种方法大小基本不一样(sg我测试的)


2、直接另存为
在figure中使用菜单file——>saveas——>选择保存形式(fig,eps,jpeg,gif,png,bmp等),这个的缺点是另存为的图像清晰度有很大的牺牲

3、复制到剪贴板
在figure中使用菜单edit——>copy figure——>此时图像就复制到剪贴板了,我们可以借助其他软件(比如:绘图板)保存为需要的图片

4、saveas命令格式
Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】

    1. % saveas(figure_handle,filename,fileformat)
       
    2. plot(1:10);
       
    3. saveas(gcf,‘myfig.jpg’)         (这种保存图像大小和源图像发生较大差别,为什么呢?就是因为句柄不一样的缘故。可以尝试
    4. set (gcf,‘Position‘,[500,500,500,500], ‘color‘,‘w‘) %大小设置。 sg我亲自测试5、print函数
      print函数原本不是用来进行图像保存了,而是操作打印机的,但是这里我们可以借用下

       

      1. % print(figure_handle,fileformat,filename)
         
      2. x=-pi:2*pi/300:pi;
         
      3. y=sin(x);
         
      4. plot(x,y);
         
      5. %Matlab根据文件扩展名,自动保存为相应格式图片,另外路径可以是绝对也可以是相对
         
      6. print(gcf,‘-dpng‘,‘abc.png‘)   %保存为png格式的图片到当前路径

      复制代码

      另外有网友向我反映,有时我们只有一个Matlab图像的fig文件,但没有该图像的相关坐标数据,那我们如何获取fig图像的数据呢,这个其实比较好办

      1、将那个fig文件保存到Matlab的搜索路径下,双击打开它
      2、在Matlab的command中输入如下内容

      1. h=get(gcf,‘chidren‘)
         
      2. data=get(h,{‘xdata‘,‘ydata‘,‘zdat a‘})
         
      3. %此时图形中所有图像的三维数据x,y,z将会以结构体的形式保存到data变量中了
        1. from: http://blog.csdn.net/lsg32/article/details/8111956

以上是关于matlab里面mesh绘图,如何改变指定区域的颜色的主要内容,如果未能解决你的问题,请参考以下文章

matlab中如何对一条曲线和X轴之间的区域进行颜色的填充,比如一个高斯曲线下对应不同X段范围填充不同的颜

Matlab知识小结

如何定义matlab里面绘图的x,y轴的范围

高亮部分matlab绘图

放大绘图轴自定义区域MATLAB 代码

放大绘图轴自定义区域MATLAB 代码