zoukankan      html  css  js  c++  java
  • Matlab 常用绘图指令(二维图形)

    使用matlab的时候常常会忘掉一些指令,每次都要重新查找,挺麻烦的,这里收集一些常用的绘图指令,供自己和大家以后方便查找和使用。

    1、例子-包含了常用绘图命令

     1 clear
     2 clc
     3 
     4 %%数据准备
     5 x = 0:0.05:1;
     6 y = -x.*log(x);
     7 figure(1);%图像1
     8 set(gcf, 'color',[0.1 0.5 1]);%设置整体图片的背景色
     9 
    10 %%绘制曲线
    11 plot(x,y,'rs-','LineWidth',2,'MarkerEdgeColor','k',...
    12     'MarkerFaceColor','g',...
    13     'MarkerSize',10);
    14 
    15 %%在最大值位置添加文本
    16 xe = 1/exp(1);
    17 ye = -xe*log(xe);
    18 hold on;
    19 plot(xe,ye,'pb', 'MarkerSize', 15,'MarkerEdgeColor','k','MarkerFaceColor','m');
    20 text(xe-0.02,ye+0.03,['最大值点(',num2str(xe,3),',',num2str(ye,3),')'],...
    21     'FontSize',12, 'Color',[0.9 0.1 0.5], 'FontWeight','bold');
    22 
    23 %%设置标题
    24 title('函数y = xlogx','Color','k','FontSize',30);
    25 
    26 %%坐标轴标题设置
    27 xlabel('xlogx','Color','k','FontSize',20);%横轴标题
    28 ylabel('y','Color','k','FontSize',20);%纵轴标题
    29 
    30 %%坐标轴刻度设置
    31 set(gca, 'ytick',x,'yticklabel',x,'xtick',x,...
    32     'xticklabel',x, 'color',[0.8 0.9 0.9],...
    33     'FontSize',10); %xtick就是你要在哪些地方显示刻度,xticklabel就是显示什么内容
    34 
    35 %%坐标轴显示范围设置
    36 axis equal  %强制坐标轴尺度相同,这个放在前面或者后面效果会不一样
    37 xlim([0 1]);%x轴范围
    38 ylim([0 0.5]);%y轴范围
    39 
    40 %%设置Legend
    41 hleg = legend('y=xlogx','Location','SouthWest');%本身不能设置字体的大小,需要通过set进行设置
    42 set(hleg,'FontSize', 15, 'FontAngle','italic','FontWeight','bold',...
    43     'TextColor',[.6,.2,.1],'Color',[1,1,1]);%Color为设置坐标的背景颜色
    44 
    45 %%网格设置
    46 % grid on;%最简单的方式
    47 % set(gca,'XMinorGrid','on','YMinorGrid');%设置最小网格,可以只设置其中的一种
    48 set(gca,'XGrid','on','YGrid','on');%设置大网格,可以只设置其中的一种
    49 
    50 %%全屏显示figure
    51 scrsz = get(0,'ScreenSize');
    52 set(gcf,'Position',scrsz);
    53 
    54 %%保存图像
    55 set(1, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
    56 filename = 'xlogx';
    57 %print(1, '-djpeg', filename);%其他格式 -djpeg,-dpng,-dbmp,-dtiff,-dgif
    58 saveas(1,filename,'png');%保存成图片,其他格式 jpeg,png,bmp,tiff,gif,另一种保存图像的方法
    59 saveas(1,filename,'fig');%保存成figure文件

      以上代码的效果图如下所示:

    2、线型、点标记和颜色

    Matlab绘制曲线,主要包含三类属性,分别是曲线的类型,点标记及其颜色。默认下通过这三种符号的组合形成一个字符串来表现曲线。搭配的形式为:

    ‘线型+颜色+标记点’,例如'-r+'表示曲线为实直线,红颜色,曲线穿插有‘+’的点标记符。如下例子所示:

    1 figure
    2 t = 0:pi/20:2*pi;
    3 plot(t,sin(t),'-.r*');
    4 hold on
    5 plot(t,sin(t-pi/2),'--mo');
    6 plot(t,sin(t-pi),':bs');
    7 hold off

     效果如下图所示:

     

    下面给出了一些常用的线型,点标记和颜色类型:  

    线型 颜色 标识符
    指示符 线型 指示符 线型 指示符 线型
    '-' 实线(默认) r 红色 '+' 加号
    '--' 双划线 g 绿色 'o' 圆圈
    ':' 虚线 b 蓝色 '*' 型号
    '-.' 点划线 c 蓝绿色 '.'
    'none' 无线,不显示 m 洋红色 'x' 叉号
        y 黄色 'square' or 's' 正方形
        k 黑色 'diamond' or 'd' 菱形
        w 白色 '^' 朝上三角符号
            'v' 朝上三角符号
            '>' 朝右三角符号
            '<' 朝左三角符号
            pentagram' or 'p' 五角星
            'hexagram' or 'h''' 六角星
            'none' 无标识符(默认)

     

     3、多图显示在一个Figure中 

    需要用到subplot(m,n,p)函数,m表示行数,n表示列数,p表示第p个图,功能为:表示在m行n列的图上绘制第p个子图像;

    实现代码如下:

     1 x = 0:0.1:20
     2 
     3 %图1
     4 y1 = sin(x).*cos(x)./x;
     5 figure(1);
     6 subplot(2,2,1);%子图1
     7 plot(x,y1,'r');
     8 title('y=sin(x)');
     9 xlabel('x');
    10 ylabel('y');
    11 
    12 %图2
    13 y2 = cos(x)./x;
    14 figure(1);
    15 subplot(2,2,2);%子图2
    16 plot(x,y2,'b');
    17 title('y=cos(x)');
    18 xlabel('x');
    19 ylabel('y');
    20 
    21 %图3
    22 y3 = x.*sin(x);
    23 figure(1);
    24 subplot(2,2,3);%子图3
    25 plot(x,y3,'k');
    26 title('y=cos(x)');
    27 xlabel('x');
    28 ylabel('y');
    29 
    30 %图4
    31 y4 = x.*cos(x.^0.5);
    32 figure(1);
    33 subplot(2,2,4);%子图4
    34 plot(x,y4,'m');
    35 title('y=cos(x)');
    36 xlabel('x');
    37 ylabel('y');
    38 
    39 %%全屏显示figure
    40 scrsz = get(0,'ScreenSize');
    41 set(gcf,'Position',scrsz);
    42 %%设置颜色
    43 set(gcf, 'color',[0.1 0.5 1]);%设置整体图片的背景色
    44 set(1, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
    45 saveas(1,'result','png');%保存成图片,其他格式 jpeg,png,bmp,tiff,gif,另一种保存图像的方法

    效果图如下:

    4、句柄,以及gcf,gca和gco三者的区别

      图形句柄的理解

      Matlab和Windows中的句柄类似,Figure是Matlab中最常用的图像对象。假设现在又多个Figures(我们视他们为对象),想对其中某个Figure进行操作,未完成这样的功能,Matlab给每个FIgure都分配了一个不同的ID(是一个数,例如1,2,3,...),而这个ID就是一个句柄。有了这个句柄我们就可以对指定相应的图形窗口,进行相应的操作,如颜色设置,字体设置和线型设置等。下面是一个关于三个图形操Figure作的例子: 

     1 clc
     2  close all
     3 %%产生三个句柄
     4 figure(1)%产生一个图形figure,并赋予句柄值为1
     5 figure(2)%产生一个图形figure,并赋予句柄值为2
     6 figure(3)%产生一个图形figure,并赋予句柄值为3
     7 
     8 %%操作Figure2
     9 %handle = 2;%这是错误的指定方式
    10 handle = figure(2);%获取figure2的句柄
    11 surf(peaks);
    12 title('Figure2','Color','w','FontSize',20);
    13 
    14 set(handle,'Color',[0,0.5,0.5],'Toolbar','none')
    15 set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
    16 
    17 %%操作Figure1
    18 handle = figure(1);%获取figure1的句柄
    19 set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
    20 surf(peaks);
    21 title('Figure1','Color','w','FontSize',20);
    22 set(handle,'Color',[0,0.0,0.5],'Toolbar','none')
    23 
    24 %%操作Figure3
    25 handle = figure(3);%获取figure3的句柄
    26 set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
    27 surf(peaks);
    28 title('Figure3','Color','w','FontSize',20);
    29 set(handle,'Color',[0.5,0.0,0.5], 'Toolbar','none')
    30 
    31 saveas(1,'1','png');
    32 saveas(2,'2','png');
    33 saveas(3,'3','png');

      结果如下图所示:  

      除了常用的Figure外,Axes也是常用的句柄,还有其他的对象,它们是用以显示图形和用户界面元素的基本元素,但用的较少,下表列出了各种图形对象:

    对象 描述
    Root 对计算机屏幕最高级的对象
    Figure 用来显示图形和用户界面的窗口
    Axes 在窗口中显示图形的轴
    Uicontrol 用户界面控制。执行一个对用户交互作用的函数。
    Uimenu 用户定义窗口菜单
    Uicontextmenu 右键单击对象时弹出的菜单
    Image 二维像素基础图
    Light 影响斑点和表面对象着色的光源
    Line 用于诸如plot,plot3,semilogx,等函数的线
    Patch 带边缘的填充多边形
    Rectangle 二维形状,从矩形到椭圆
    Surface 由x-y平面以上的数据值所作图创建的矩阵数据的三维表示
    Text 字符串

      gcf,gca和gco

      gcf 返回当前Figure 对象的句柄值,可以操作图形的整体效果,如背景色,图形打印设置等
      gca 返回当前axes 对象的句柄值,可以操作坐标轴的效果,包括了坐标轴的刻度,显示范围,字体大小,字体磅数(普通,加粗),字体方向(斜体,正体)
      gco 返回当前鼠标单击的句柄值,该对象可以是除root 对象外的任意图形对象,并且Matlab 会把当前图形对象的句柄值存放在Figure 的CurrentObject属性中。

    4、参考资料

      [1]. http://blog.sina.com.cn/s/blog_675eb4fd0100tvhp.html

      [2]. http://www.cnblogs.com/CBDoctor/archive/2012/04/06/2434072.html

      [3]. http://blog.csdn.net/wguoyong/article/details/6873877

      

  • 相关阅读:
    算法训练 P1103
    算法训练 表达式计算
    算法训练 表达式计算
    基础练习 时间转换
    基础练习 字符串对比
    Codeforces 527D Clique Problem
    Codeforces 527C Glass Carving
    Codeforces 527B Error Correct System
    Codeforces 527A Glass Carving
    Topcoder SRM 655 DIV1 250 CountryGroupHard
  • 原文地址:https://www.cnblogs.com/cv-pr/p/4664893.html
Copyright © 2011-2022 走看看