• 全面总结:MATLAB如何画出漂亮的图


    在绘图命令中应该如何确定横坐标和纵坐标的标度尺寸(自己定范围)
    如何在一个坐标中绘制多条曲线,并用不同的颜色区别。
    希望得到答案,谢谢!!!!!!!!!!!
    help plot
    help axis

    axis ('xlabel','ylabel')

    a1=plot();
    hlod on
    a2=plot();
    legend([a1 a2],'图1名',‘图2名')
    hold off
    还可以更多

    x1=-pi:pi/12:pi;
    x2=-pi:pi/12:pi;
    y1=sin(x1);
    y2=cos(x2);
    plot(x1,y1,x2,y2);
    axis([-2*pi 2*pi -2 2]);
    xlabel('x');
    ylabel('y');
    title('sin(x) & cos(x)');




    函数及图形控制函数及操作和控制MATLAB在图形窗口中绘制或输出图形,因此图形窗口就像一张绘图纸.
    2.在MATLAB通过管理图形窗口的句柄来管理图形窗口;
    3.当前窗口句柄可以由函数gcf获得;
    4.在任何时刻,只有唯一的一个窗口是当前的图形窗口(活跃窗口);
    figure(h)----将句柄为h的窗口设置为当前窗口;
    5.打开图形窗口的方法有三种:
    1)调用绘图函数时自动打开;
    2)用File---New---Figure新建;
    3)figure命令打开,close命令关闭.
    在运行绘图程序前若已打开图形窗口,则绘图函数不再打开,而直接利用已
    打开的图形窗口;若运行程序前已存在多个图形窗口,并且没有指定哪个窗
    口为当前窗口时,则以最后使用过的窗口为当前窗口输出图形.
    6.窗口中的图形打印:用图形窗口的File菜单中的Print项.
    7.可以在图形窗口中设置图形对象的参数.具体方法是在图形窗口的Edit菜
    单中选择Properties项,打开图形对象的参数设置窗口,可以设置对象的属
    性.
    二.坐标系
    1.一个图形必须有其定位系统,即坐标系;
    2.在一个图形窗口中可以有多个坐标系,但只有一个当前的坐标系;
    3.每个坐标系都有唯一的标识符,即句柄值;
    4.当前坐标系句柄可以由函数gca获得;
    5.使某个句柄标识的坐标系成为当前坐标系,可用如下函数:
    1)定义坐标范围:一般MATLAB自动定义坐标范围,如用户认为设定的不
    合适,可用:axis([Xmin, Xmax, Ymin, Ymax]) 来重新设定;
    29
    2)坐标轴控制:MATLAB的缺省方式是在绘图时,将所在的坐标系也画出
    来,为隐去坐标系,可用axis off;axis on则显示坐标轴
    (缺省值).
    3)通常函数
    plot函数,其基本的调用格式为:
    1.plot(y)------绘制向量y对应于其元素序数的二维曲线图,如果y为复数向量,
    则绘制虚部对于实部的二维曲线图.
    例:绘制单矢量曲线图.
    y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20];
    plot(y)
    由于y矢量有10个元素,x坐标自动定义为[1 2 3 4 5 6 7 8 9 10].图形为:
    12345678910
    0
    2
    4
    6
    8
    10
    12
    14
    16
    18
    20
    2.plot(x,y)------绘制由x,y所确定的曲线.
    1)x,y是两组向量,且它们的长度相等,则plot(x,y)可以直观地绘出以x为
    横坐标,y为纵坐标的图形.
    如:画正弦曲线:
    t=0:0.1:2*pi;
    y=sin(t);
    plot(t,y)
    2)当plot(x,y)中,x是向量,y是矩阵时,则绘制y矩阵中各行或列对应于
    30
    向量x的曲线.如果y阵中行的长度与x向量的 长度相同,则以y的行
    数据作为一组绘图数据;如果y阵中列的长度与x向量的 长度相同,则
    以y的列数据作为一组绘图数据;如果y阵中行,列均与x向量的长度相
    同,则以y的每列数据作为一组绘图数据.
    例:下面的程序可同时绘出三条曲线.MATLAB在绘制多条曲线时,会
    按照一定的规律自动变化每条曲线的的颜色.
    x=0:pi/50:2*pi;
    y(1,:)=sin(x);
    y(2,:)=0.6*sin(x);
    y(2,:)=0.3*sin(x);
    plot(x,y)
    或者还可以这样用:
    x=0:pi/50:2*pi;
    y=[ sin(x); 0.6*sin(x); 0.3*sin(x)];
    plot(x,y)
    01234567
    -1
    -0.8
    -0.6
    -0.4
    -0.2
    0
    0.2
    0.4
    0.6
    0.8
    1
    3) 如果x,y是同样大小的矩阵,则plot(x,y)绘出y中各列相应于x中各列的
    图形.
    例:x(1,:)=0:pi/50:2*pi;
    x(2,:)=pi/4:pi/50:2*pi+pi/4;
    x(3,:)=pi/2:pi/50:2*pi+pi/2;
    y(1,:)=sin(x(1,:));
    y(2,:)=0.6*sin(x(2,:));
    y(3,:)=0.3*sin(x(3,:));
    plot(x,y)
    x=x';
    y=y';
    figure
    31
    plot(x,y)
    在这个例子中,x------3x101,y------3x101,所以第一个plot按列画出
    101条曲线,每条3个点;而x'------101x3,y'------101x3,所以第二个plot
    按列画出3条曲线,每条101个点.
    012345678
    -1
    -0.8
    -0.6
    -0.4
    -0.2
    0
    0.2
    0.4
    0.6
    0.8
    1
    012345678
    -1
    -0.8
    -0.6
    -0.4
    -0.2
    0
    0.2
    0.4
    0.6
    0.8
    1
    3.多组变量绘图:plot(x1, y1, 选项1, x2, y2, 选项2, ……)
    上面的plot格式中,选项是指为了区分多条画出曲线的颜色,线型及标记点
    而设定的曲线的属性.MATLAB在多组变量绘图时,可将曲线以不同的颜
    色,不同的线型及标记点表示出来.这些选项如下表所示:
    各种颜色属性选项
    选 项 意 义 选 项 意 义
    'r' 红色 'm' 粉红
    'g' 绿色 'c' 青色
    32
    'b' 兰色 'w' 白色
    'y' 黄色 'k' 黑色
    各种线型属性选项
    选 项 意 义 选 项 意 义
    '-' 实线 '--' 虚线
    ':' 点线 '-.' 点划线
    各种标记点属性选项
    选 项 意 义 选 项意 义
    '.' 用点号绘制各数据点 '^' 用上三角绘制各数据点
    '+' 用'+'号绘制各数据点 'v' 用下三角绘制各数据点
    '*' 用'*'号绘制各数据点 '>' 用右三角绘制各数据点
    ' .' 用'.'号绘制各数据点 '<' 用左三角绘制各数据点
    's'或squar 用正方形绘制各数据点'p' 用五角星绘制各数据点
    'd'或diamond用菱形绘制各数据点 'h' 用六角星绘制各数据点
    这些选项可以连在一起用,如:'-.g'表示绘制绿色的点划线,'g+'表示用绿
    色的'+'号绘制曲线.
    注意:1)表示属性的符号必须放在同一个字符串中;
    2)可同时指定2~3个属性;
    3)与先后顺序无关;
    4)指定的属性中,同一种属性不能有两个以上.
    例:t=0:0.1:2*pi;
    y1=sin(t);
    y2=cos(t);
    y3=sin(t).*cos(t);
    plot(t,y1, '-r',t,y2, ':g',t,y3, '*b')
    该程序还可以按下面的方式写:
    t=0:0.1:2*pi;
    y1=sin(t);
    y2=cos(t);
    y3=sin(t).*cos(t);
    plot(t,y1, '-r')
    hold on
    plot(t,y2, ':g')
    plot(t,y3, '*b')
    hold off
    注:在画图前已有打开的图形窗口,则再画图系统将自动
    擦掉坐标系中已有的图形对象,但设置了hold on后,可以保持坐标系中已绘出
    的图形.
    33
    01234567
    -1
    -0.8
    -0.6
    -0.4
    -0.2
    0
    0.2
    0.4
    0.6
    0.8
    1
    图(a)
    还可以进一步设置包括线的宽度(LineWidth),标记点的边缘颜色
    (MarkerEdgeColor),填充颜色(MarkerFaceColor)及标记点的大小(MarkerSize)
    等其它绘图属性.
    例:设置绘图线的线型,颜色,宽度,标记点的颜色及大小.
    t=0:pi/20:pi;
    y=sin(4*t).*sin(t)/2;
    plot(t,y,'-bs','LineWidth',2,... %设置线的宽度为2
    'MarkerEdgeColor','k',... %设置标记点边缘颜色为黑色
    'MarkerFaceColor','y',... %设置标记点填充颜色为黄色
    'MarkerSize',10) %设置标记点的尺寸为10
    绘出图形如下:
    00.511.522.533.5
    -0.5
    -0.4
    -0.3
    -0.2
    -0.1
    0
    0.1
    0.2
    0.3
    0.4
    0.5
    34
    4.双Y轴绘图:plotyy()函数如:plot,semilogx,
    loglog等.
    例如:在一个图形窗口中绘制双Y轴曲线.
    x=0:0.3:12;
    y=exp(-0.3*x).*sin(x)+0.5;
    plotyy(x,y,x,y,'plot','stem')
    图形如下:
    024681012
    0
    0.5
    1
    1.5
    024681012
    0
    0.5
    1
    1.5
    stem:绘制stem形式的曲线(上端带圈的竖线).
    绘图结果:两条图线自动用不同的颜色区分,两个坐标的颜色与图线的颜
    色相对应,左边的Y轴坐标对应的是plot形式的曲线,右边的Y坐标对应的
    是stem形式的曲线.
    二.对数坐标图绘制函数:semilogx,semilogy和loglog函
    数.
    1)semilogx( )------绘制以X轴为对数坐标轴的对数坐标图.
    其调用格式为:semilogx(x,y,'属性选项')
    其中属性选项同plot函数只对横坐标进行对数变换,纵坐标仍为线性坐标.
    2)semilogy( )------绘制以Y轴为对数坐标轴的对数坐标图.
    其调用格式为:semilogy(x,y,'属性选项')
    函数分别对横,纵坐标都进行对数变换.
    例:x=0:0.1:6*pi;
    y=cos(x/3)+1/9;
    subplot(221), semilogx(x,y);
    subplot(222), semilogy(x,y);
    subplot(223), loglog(x,y);
    4)函数:logspace( )函数,可按对数等间距地分
    布来产生一个向量,其调用格式为:
    x=logspace(x1,x2,n)
    这里,x1表示向量的起点;x2表示向量的终点;n表示需要产生向量点的
    个数(一般可以不给出,采用默认值50).
    在控制系统分析中一般采用这种方法来构成频率向量w.关于它的应用后面
    还要讲到.
    三.极坐标图的绘制函数.其调用格式如下:
    polar(theta, rho,'属性选项')------theta:角度向量,rho:幅值向量,属性
    内容与plot函数基本一致.
    例如:极坐标模型为:3145/)/)cos((+ =θρ, ],[πθ80∈则绘出极坐标图
    的程序为:theta=0:0.1:8*pi;
    p=cos((5*theta)/4)+1/3;
    polar(theta,p)
    0.5
    1
    1.5
    30
    210
    60
    240
    90
    270
    120
    300
    150
    330
    1800
    四.绘制多个子图:subplot( )MATLAB允许在一个图形窗口上绘制多个子图(如对于多变量系统的输
    出),允许将窗口分成nxm个部分.
    分割图形窗口用subplot画图部分的代号,表示第几个图形,nmk三个数可以连写,中间不用
    符号分开.
    例如:将窗口划分成2x2=4个部分,可以这样写:
    subplot(2,2,1),plot(……)
    subplot(2,2,2),……
    subplot(2,2,3),……
    subplot(2,2,4),……
    221 222
    223 224
    注:subplot画图功能,只是将窗口分割.
    第三节 图形的修饰与标注
    函数修饰画出的图形,这些函数
    其调用格式为:title('字符串')------字符串可以写中文
    如:title('My own plot')
    2)坐标轴的说明:xlabel和ylabel函数
    A.text函数:按指定位置在坐标系中写出说明文字.
    格式为:text(x1, y1, '字符串', '选项')
    x1,y1为指定点的坐标;'字符串'为要标注的文字;'选项'决定x1,y1
    的坐标单位,如没有选项,则x1,y1的坐标单位和图中一致;如选项为'sc',
    则x1,y1表示规范化窗口的相对坐标,其范围为0到1.
    (1,1)
    规范化窗口
    (0,0)
    37
    如:text(1,2, '正弦曲线')
    B.gtext函数时,在图形窗口中出现一个随鼠标移动的大十字交叉线,
    移动鼠标将十字线的交叉点移动到适当的位置,点击鼠标左键,gtext参数中
    的字符串就标注在该位置上.
    4)给图形加网格:grid函数的应用实例:
    例:在图形中加注坐标轴标识和标题及在图形中的任意位置加入文本.
    t=0:pi/100:2*pi;
    y=sin(t);
    plot(t,y),grid,
    axis([0 2*pi -1 1])
    xlabel('0 leq itt rm leq pi','FontSize',16)
    ylabel('sin(t)','FontSize',20)
    title('正弦函数图形
    ←sin(t)=0
    ←sin(t)=0.707
    sin(t)=-0.707→
    5)在图形中添加图例框:legend函数
    其调用格式为:
    A.legend('字符串1', '字符串2', ……)------以字符串1,字符串2…… 作
    38
    为图形标注的图例.
    B.legend('字符串1', '字符串2', ……, pos)------pos指定图例框显示的位置.
    图例框被预定了6个显示位置:
    0------取最佳位置;
    1------右上角(缺省值);
    2------左上角;
    3------左下角;
    4------右下角;
    -1------图的右侧.
    例:在图形中添加图例.
    x=0:pi/10:2*pi;
    y1=sin(x);
    y2=0.6*sin(x);
    y3=0.3*sin(x);
    plot(x,y1,x,y2,'-o',x,y3,'-*')
    legend('曲线1','曲线2','曲线3')
    绘出图形如下:
    02468
    -1
    -0.5
    0
    0.5
    1
    曲线1
    曲线2
    曲线3
    6)用鼠标点选屏幕上的点:ginput函数
    格式为:[x, y, button]=ginput(n)
    其中:n为所选择点的个数;x,y均为向量,x为所选n个点的横坐标;
    y为所选n个点的纵坐标.
    button为n维向量,是所选n个点所对应的鼠标键的标号:
    1------左键;
    2------中键;
    3------右键.
    可用不同的鼠标键来选点,以区别所选的点.
    此语句可以放在绘图语句之后,它可在绘出的图形上操作,选择你所感
    兴趣的点,如峰值点,达到稳态值的点等,给出点的坐标,可求出系统的
    性能指标.
    39
    第四节 MATLAB图形对象是指图形系统中最基本,最底层的单元,这些对象包括:
    屏幕(Root),图形窗口(Figures),坐标轴(Axes),控件(Uicontrol),菜单(Uimenu),
    线(Lines),块(Patches),面(Surface),图像(Images),文本(Text)等等.
    根据各对象的相互关系,可以构成如下所示的树状层次:
    Root
    Figures
    Axes Uicontrol Uimenu Uicontextmenu (对象菜单)
    Images Line Patch Surface Text
    对各种图形对象进行修改和控制,要使用MATLAB中,每个图形对象创立时,就被赋予了唯一的标识,这
    个标识就是该对象的句柄.
    句柄的值可以是一个数,也可以是一个矢量.如每个计算机的根对象只有
    一个,它的句柄总是0,图形窗口的句柄总是正整数,它标识了图形窗口的序号
    等.
    利用句柄可以操纵一个已经存在的图形对象的属性,特别是对指定图形对
    象句柄的操作不会影响同时存在的其它图形对象,这一点是非常重要的.
    一.对图形对象的修改可以用下面函数:用于设置句柄所指的图形对象的属性.
    Set函数:获取指定句柄的图形对象指定属性的当前值.
    格式为:get(句柄, '属性名')
    如: get(gca, 'Xcolor')------获得X轴的当前颜色属性值.
    执行后可返回X轴的当前颜色属性值[0,0,0](黑色).
    3)如果没有设置句柄,则可以使用下列函数获得:
    gcf:获得当前图形窗口的句柄;
    gca:获得当前坐标轴对象的句柄;
    gco:获得当前对象的句柄.
    如:
    A.要对图形窗口的底色进行修改,可用:
    set(gcf, 'Color', [1,1,1])------将图形窗口底色设为白色
    B.要把当前X轴的颜色改为绿色,可用:
    set(gca, 'Xcolor', [0,1,0])
    40
    C.还可对坐标轴的显示刻度进行定义:
    t=-pi:pi/20:pi;
    y=sin(t);
    plot(t,y)
    set(gca,'xtick',[-pi:pi/2:pi],'xticklabel',['-pi','-pi/2','0','pi/2','pi'])
    -pi-pi/20pi/2pi
    -1
    -0.5
    0
    0.5
    1
    本例中用'xtick'属性设置x轴刻度的位置(从-pi~pi,间隔pi/2,共设置
    5个点),用'xticklabel'来指定刻度的值,由于通常习惯于用角度度量三角函
    数,因此重新设置['-pi','-pi/2','0','pi/2','pi']5个刻度值.
    二.一些常用的属性如下:
    1)Box属性:决定图形坐标轴是否为方框形式,选项为'on'(有方框),
    'off'(无方框);
    2)'ColorOrder'属性:设置多条曲线的颜色顺序,默认值为:
    [1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]
    黄色 粉色 天蓝 红色 绿色 兰色
    颜色向量还有:[1 1 1]------白色;[0 0 0]------黑色.
    3)坐标轴方向属性:'Xdir','Ydir','Zdir',其选项为:
    'normal'------正常
    'reverse'------反向
    4)坐标轴颜色和线型属性:'Xcolor','Ycolor','Zcolor'------ 轴颜色,
    值为颜色向量




    如何在画好曲线后 再在图上标刻度啊???
    就是想在一些特定的点边上标上一串30.60.90~7200 递增的数据]
    共有96个点要标!!
    难道只能用text一个一个的画吗??
    求求大家了 帮帮忙忙吧
    循环语句加上text,不行吗?




    url='http://hiphotos.baidu.com/baidu/pic/item/826405f4715fb763dcc47472.jpg';
    im = imread(url);
    imshow(im)

    然后输入:

    text(100,100,'o ','Color','red');
    matlab,用imread读入一个图片,我想在图上的一些坐标点上做标记。比如把图上坐标值为(100,100)的点用红圈标注出来。具体用什么命令语句实现呢


    用subplot在一个图象窗口中作下列四条曲线,并为每幅图形加上标
    题:
    1) 概率曲线y=e^(-x^2)
    x
    2) 四叶玫瑰线 ρ=sin2θ
    3) 叶形线x=3t/(1+t^3)
    y=3t^2/(1+t^3)
    4)摆线x=a(t-sint), y=a(1-cost), t∈[0,2π]。



    第二个

    在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4PIx)和y1=2e-0.5xcos(PIx),标记两曲线交叉点。

    PI是圆周率


    很急,谢谢

    clc;clear
    subplot(2,2,1)
    ezplot('exp(-x^2)')
    subplot(2,2,2)
    ezpolar('sin(2*t)')
    subplot(2,2,3)
    t=0:pi/100:2*pi;
    x=3*t./(1+t.^3);
    y=3*t.^2./(1+t.^3);
    plot(x,y)
    subplot(2,2,4)
    a=2;
    x1=a*(t-sin(t));
    y1=a*(1-cos(t));
    plot(x1,y1)

    %[2]
    x=0:pi/500:2*pi;
    y1=0.2*exp(1)-0.5*x.*cos(4*pi*x);
    y2=2*exp(1)-0.5*x.*cos(pi*x);
    figure
    plot(x,[y1;y2])

    'LineWidth'------ 轴的线宽,值为数字
    'Xgrid','Ygrid','Zgrid'------坐标轴上是
    否加网格,值为'on'和'off'.
    5)坐标轴的标尺属性:'Xtick','Ytick','Ztick'------ 标度的位置,值为
    向量
    'Xticklabel','Yticklabel','Zticklabel'------ 轴上
    标度的符号,它的值为与标度位置向量同样大
    小(向量个数相同)的向量.
    5)字体设置属性:'FontAngle'------ 设置字体角度,选项为:
    41
    'normal'------ 正常;
    'italic'------ 斜体;
    'oblique'------ 倾斜;
    'FontName'------ 字体名称;
    'FontSize'------ 字号大小
    'FontWeight'------ 字体的轻重,选项为:'light',
    'normal','bold'
    42

    via from:  http://www.eefocus.com/sunshine/blog/09-05/170813_8c98c.html

  • 相关阅读:
    php socket 客户端代码
    linux crontab定时执行
    加载 pcntl 多进程
    Xdebug 配置
    Zend Debugger 配置
    windows SVN搭建
    深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
    操作系统-分段机制
    C++中的new、operator new与placement new
    线程安全的概念
  • 原文地址:https://www.cnblogs.com/menfightfor2018/p/3863951.html
Copyright © 2020-2023  润新知