• 【转】Matlab作图语句小结


    之前用Matlab作图,从网上找了些别人的例子,然后慢慢调参数。其实对很多命令,特别是对句柄不是很了解,今天简单总结了一下。下面用几个例子来说明:

    1 set(gcf,'Units','centimeters','Position',[10 10 9 9]); 

    首先,gcf是当前figure对象的句柄。作为figure对象,有很多属性(property),具体可以查询Matlab的帮助系统。例如,下面是帮助系统的介绍:

    其中一个属性是Units,我们可以把它理解成编程语言中的枚举类型。它的几个值分别是:inches | centimeters | normalized | points | {pixels} | characters,这个对象的全称叫Units of measurement. 定于了用什么度量单位来interpret和位置、大小有关的数据。所有的度量都从窗口的左下角开始算起。

    我们再看看Position这个属性:[left, bottom, width, height]这个向量中的left, bottom定义了figure窗口的左端和下端距离屏幕的左下角的距离。width, height定义了绘图窗口除了title bar, menu bar, tool bars, and outer edges的大小(以厘米为单位)

    我们再来看看这两条语句:

      1 set(get(gca,'XLabel'),'FontSize',9,'Fontname','Arial','FontWeight','bold');  
      2 set(gca, 'Position', [0.15 0.15 0.78 0.78]); 

        这两条语句中都有gca,代表的是坐标轴的当前句柄(Current axes handle)。第二条语句定义了坐标轴相对于绘图窗口的位置,也是从左下角开始计算。对于第一条语句,我们可以理解为XLabel是坐标轴对象的一个成 员变量,只不过这个成员变量也是一个对象,所以要用get(gca,’XLabel’)这种方法才能设置XLabel的属性。

        Matlab的主要图形对象有:

        对象 描述

        Root 对计算机屏幕最高级的对象

        Figure 用来显示图形和用户界面的窗口

        Axes 在窗口中显示图形的轴

        Uicontrol 用户界面控制。执行一个对用户交互作用的函数。

        Uimenu 用户定义窗口菜单

        Uicontextmenu 右键单击对象时弹出的菜单

        Image 二维像素基础图

        Light 影响斑点和表面对象着色的光源

        Line 用于诸如plot, plot3, semilogx 等函数的线

        Patch 带边缘的填充多边形

        Rectangle 二维形状,从矩形到椭圆

        Surface 由x-y 平面以上的数据值所作图创建的矩阵数据的三维表示

        Text 字符串

        具体的用法可以参考这篇文章:http://www.doc88.com/p-339432229690.html


        突然想起来一个很有意思的话题,再简单说两句,我们通常画图的时候,比较倾向于在论文中用灰度图,这时候其实区分度不是很明显,实际上我们可以指定填充的颜色更丰富些:

        例如这篇日志中介绍的:

        多组变量绘图:plot(x1, y1, 选项1, x2, y2, 选项2, ……)
        上面的plot格式中,选项是指为了区分多条画出曲线的 颜色,线型及标记点
        而设定的曲线的属性.MATLAB在多组变量绘图时,可将曲线以不同的颜
        色,不同的线型及标记点表示出来.

        颜色属性
        ‘r’ 红色 ‘m’ 粉红
        ‘g’ 绿色 ‘c’ 青色
        ‘b’ 兰色 ‘w’ 白色
        ‘y’ 黄色 ‘k’ 黑色
        线型属性

        ‘-’ 实线 ‘–’ 虚线
        ‘:’ 点线 ‘-.’ 点划线
        标记点属性


        ‘.’ 用点号绘制各数据点 ‘^’ 用上三角绘制各数据点
        ‘+’ 用’+'号绘制各数据点 ‘v’ 用下三角绘制各数据点
        ‘*’ 用’*'号绘制各数据点 ‘>’ 用右三角绘制各数据点
        ‘ .’ 用’.'号绘制各数据点 ‘<’ 用左三角绘制各数据点
        ‘s’或squar 用正方形绘制各数据点’p’ 用五角星绘制各数据点
        ‘d’或diamond用菱 形绘制各数据点 ‘h’ 用六角星绘制各数据点
        这些选项可以连在一起用,如:’-.g’表示绘制绿色的点划线,’g+’表示用绿
        色的 ‘+’号绘制曲线.
        注意:

        1)表示属性的符号必须放在同一个字符串中;
        2)可同时指定2~3个属性;
        3)与先后顺序无关;
        4)指定的属性中,同一种属性不能有两个以上.

        例:

        1 t=0:0.1:2*pi;
        2 y1=sin(t);
        3 y2=cos(t);
        4 y3=sin(t).*cos(t);
        5 plot(t,y1, ‘-r’,t,y2, ‘:g’,t,y3, ‘*b’)


        该程序还可以写成:

        1 t=0:0.1:2*pi;
        2 y1=sin(t);
        3 y2=cos(t);
        4 y3=sin(t).*cos(t);
        5 plot(t,y1, ‘-r’)
        6 hold on
        7 plot(t,y2, ‘:g’)
        8 plot(t,y3, ‘*b’)
        9 hold off


        注:在MATLAB中,如画图前已有打开的图形窗口,则再画图系统将自动擦掉坐标系中已有的图形对象,但设置了hold on后,可以保持坐标系中已绘出的图形.
        设置线宽度(LineWidth),标记点的边缘颜色(MarkerEdgeColor),

        填充颜色 (MarkerFaceColor)及标记点的大小(MarkerSize)

        例:设置绘图线的线型,颜色,宽度,标记 点的颜色及大小:

        1 t=0:pi/20:pi;
        2 y=sin(4*t).*sin(t)/2;
        3 plot(t,y,’-bs’,'LineWidth’,2,… %设置线的宽度为2
        4 ‘MarkerEdgeColor’,'k’,… %设置标记点边缘颜色为黑色
        5 ‘MarkerFaceColor’,'y’,… %设置标记点填充颜色为黄色
        6 ‘MarkerSize’,10) %设置标记点的尺寸为10

        ————————————————————————(以上内容为转载)

        对于MarkerFaceColor这个属性,其实我们可以通过RGB值来进行更细粒度的指定,可以把后面的y变为:[.5 .5 .5],Matlab用这样一个向量,实际上指定了颜色的RGB值。只不过每一个值都是原来的RGB分量除以255。那么我们就可以对不同的形状指定不同 的灰度填充(三个分量一样,就是不同的灰度),其实看起来效果会好很多。例如下面这个图,是不是看起来更有区分度一些:


        如果是一个彩色图,那选择就更多了。例如可以指定线条的颜色:

           
        1 plot(New(:,10),'-*','Color',[1 0 0]); 


        就指定了一个红色的带星号的线条,其实可以指定很舒服的颜色(默认的绿色、黄色都过于亮,看不清),那么具体我们可以选什么颜色呢?可以看看类似这个PPT里面的介绍,用的时候分量除以255就可以了:

        http://wenku.baidu.com/view/92cd63e4524de518964b7d18.html

      1. 相关阅读:
        HDU4366 Successor 线段树+预处理
        POJ2823 Sliding Window 单调队列
        HDU寻找最大值 递推求连续区间
        UVA846 Steps 二分查找
        HDU3415 Max Sum of MaxKsubsequence 单调队列
        HDU时间挑战 树状数组
        UVA10168 Summation of Four Primes 哥德巴赫猜想
        UESTC我要长高 DP优化
        HDUChess 递推
        HDU4362 Dragon Ball DP+优化
      2. 原文地址:https://www.cnblogs.com/xiongyunqi/p/3736621.html
      Copyright © 2020-2023  润新知