MATLAB作图方法与技巧

一、Matlab绘图中用到的直线属性包括:
(1)LineStyle:线形
(2)LineWidth:线宽
(3)Color:颜色
(4)MarkerType:标记点的形状
(5)MarkerSize:标记点的大小
(6)MarkerFaceColor:标记点内部的填充颜色
(7)MarkerEdgeColor:标记点边缘的颜色

1、线形
标记符 线形
- 实线
-- 虚线
: 点线
-. 点横线

2、点形
标记符 点形
+ 加号
o 圆圈
* 星号
. 实心点
x 叉号
s 正方形
d 钻石形
^ 上三角形
v 下三角形
> 右三角形
< 左三角形
p 五角星形
h 六角星形

3、颜色
标记符 颜色
r 红
g 绿
b 蓝
c 蓝绿
m 紫红
y 黄
k 黑
w 白

二、描绘不同的直线
当我们需要对不同类别的数据点进行连线的时候,可以设置以下属性来区分不同类别的点和相应的直线:
(1)LineStyle:线形
(2)MarkerSymbol:点形
(3)Color:颜色
例如:
plot(x,y,'-.or','MarkerFaceColor','g')
其中线形为点横线,数据点形状为圆圈,线条和数据点边缘的颜色都是红色,数据点的填充颜色为绿色。
三、描绘数据点的分布
有时候我们希望画出数据点的分布情况,不需要画出这些点之间的连线,则可以按以下方式实现:
plot(x,y,'d')
即只定义数据点的点形。
最后给出一个例子说明怎样运用以上属性来画图:
plot(t,sin(2*t),'-mo',...
'LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[.49 1 .63],...
'MarkerSize',12)

==========================================================

1.利用指令plot绘制圆的参数方程x = sin(t),y = cos(t),(0<=t<=2*pi)的曲线图.

    代码如下

    t = linspace(0,2*pi,100);

    x = sin(t);y = cos(t);

    f = x + i*y;

    plot(f);

   axis('square');

    其中axis中的参数为square表示图形示以正方形的形式显示.


2.figure命令

    figure(i)有两种不同的功能

    ①若没有第i个图形窗口,则新建第i个图形窗口

    ②若有第i个图形窗口,则将第i个图形窗口切换到当前窗口


3.柱状图的绘制

    bar作垂直的柱状图,barh作水平的柱状图,下面以bar为例说明其两种用法.

    ①bar(X)

    作以X为值的柱状图,如

    X = [1 5 3;2 5 4;3 9 6;4 8 6;12 2 2];

    bar(X);

    这种用法是以自然数作为横坐标索引的.

    ②bar(X,Y)

    作以X为横坐标索引且以Y为值的柱状图,如

    X = [2012 2013 2014 2015 2016];

    Y = [1 5 3;2 5 4;3 9 6;4 8 6;12 22];

    bar(X,Y);

    ③bar(X,’stack’)

    如:

    X = [1 5 3;2 54;3 9 6;4 8 6;12 2 2];

    bar(X,'stack');

    ④bar(X,Y,’stack’)

    如:

    X = [2012 20132014 2015 2016];

    Y = [1 5 3;2 54;3 9 6;4 8 6;12 2 2];

    bar(X,Y,'stack');


4.饼图的绘制

    pie命令绘制平面饼图,pie3命令绘制三维饼图,下面以pie命令为例说明其常用用法.

    ①pie(x)

    作以向量x为比例的平面饼图,如

    x = [5 1 4 3 2];

    pie(x);

    ②pie(x,explode)

    作以向量x为比例的平面饼图,并根据0-1向量explode将某一块分裂出去,如

    x = [5 1 4 3 2];

    explode = [0 1 0 1 0];

    pie(x,explode);

    下面,是一个综合的例子

    x = [5 1 4 3 2];

    explode = [0 1 0 1 0];

    subplot(2,2,1);

    pie(x);

    subplot(2,2,2);

    pie(x,explode);

    subplot(2,2,3);

    pie3(x);

    subplot(2,2,4);

    pie3(x,explode);


5.根据参数方程绘制空间曲线——plot3命令

    plot3命令有两种参数形式,区别在于是否有对曲线颜色、样本点形状、曲线形式等的控制参数

    ①不带控制参数

    如绘制x=sin(t),y=cos(t),z=t,0<=t<=10*pi的空间曲线,使用plot3命令,如下

    t =linspace(0,10*pi,360);

    x = sin(t);y =cos(t);z = t;

    plot3(x,y,z);grid on;

    ②带控制参数

    如绘制x=sin(t),y=cos(t),z=cos(2t),0<=t<=2*pi的空间曲线,使用plot3命令,如下

    t =linspace(0,2*pi,36);

    x = sin(t);y = cos(t);z= cos(2*t);

    plot3(x,y,z,'b*--');gridon;


6.根据函数z=f(x,y)绘制空间曲面

    先用meshgrid命令生成数据点(x,y)集合,再用mesh或surf命令绘制曲面图,二者的参数形式完全一样,区别在于surf会在给网格上涂色

    ①mesh命令

    绘制z=xy在[-1,1]x[2,4]上的曲面图,使用mesh命令

    x =linspace(-1,1,10);

    y =linspace(2,4,20);

    [X,Y] = meshgrid(x,y);

    Z = X.*Y;

    mesh(X,Y,Z);

    ②surf命令

    将①中代码的mesh换为surf会得到不一样的结果,代码如下

    x =linspace(-1,1,10);

    y =linspace(2,4,20);

    [X,Y] =meshgrid(x,y);

    Z = X.*Y;

    surf(X,Y,Z);

=====================================================================

1. plot(x,y); %x y 为相应点集

2.plot(x,y1,x,y2); % 在一个窗口下绘制多条曲线之方法一

3.hold on  %在一个窗口下绘制多条曲线之方法二

  plot(x,y1);

 plot(x,y2);

 hold off

4.plot后

   xlabel('x_axis_name'); %设置x y轴名称

   ylabel('x_axis_name'); 

   title('name'); %设置图名称

5.线型和颜色

线型(线方式): - 实线 :点线 -. 虚点线 - - 波折线

线型(点方式):. 圆点 +加号 * 星号 x x形 o 小圆

线条粗细:plot(x,y,'r','linewidth',4); 

颜色: r红; g绿; b蓝; c青  m紫; k黑; w白;y黄;

例子:

plot(x,y1,’b:+’,x,y2,’g-.*’);

6.加图例legend

legend(字符串1,字符串2,字符串3,…,参数);  %其中字符串为画图顺序依次标注,参数说明如下:

参数字符串                              含  义

0                             尽量不与数据冲突,自动放置在最佳位置    

1                              放置在图形的右上角

2                              左上角

3                             左下角

4                             右下角

-1                            图形窗外

7.设置背景色

set(gcf,'color','none'); %无背景

set(gcf,'color',[0,0,0]); %背景色为黑

set(gcf,'color',[1,1,1]); %背景色为白

=====================================================================

1.绘制二维散点图

① scatter函数

    scatter(x,y,s,c)函数绘制向量x和y的散点图,其中s代表点的大小,c代表点的形状,s和c缺省时为默认值.

    例如作x = [4 2 4 8 2 6 7 6 8 4 3 7]和y = [5 9 8 4 3 6 4 78 2 4 6]的散点图,代码如下

    x = [4 2 4 8 2 67 6 8 4 3 7];

    y = [5 9 8 4 3 64 7 8 2 4 6];

    scatter(x,y,20,'o');

    box on;

②plot函数

    将①中代码的scatter替换为plot,可以得到完全相同的图像.

2.绘制三维散点图

    使用scatter3函数,用法类似scatter函数,用法为scatter(x,y,z,s,c).

    例如作x = [0.3 0.5 1.21.3 4.2 2.0 1.2 0.5 0.74 1.1 1.5 2.2];y = [0.2 0.5 0.1 0.4 1.2 0.2 1.2 0.2 1.11.5 4.1 2.2];z = [2     5 3 1 4 7 8 12 11 4 2 7];

    的三维散点图,代码如下

    x = [0.3 0.5 1.21.3 4.2 2.0 1.2 0.5 0.74 1.1 1.5 2.2];

    y = [0.2 0.5 0.10.4 1.2 0.2 1.2 0.2 1.1 1.5 4.1 2.2];

    z = [2 5 3 1 4 78 12 11 4 2 7];

    scatter3(x,y,z,50,'b.');box on;


3.grid on

用于二维平面的网格化,作用类似meshgrid,但是meshgrid需要写在作图之前,grid on是写在作图之后.


3.hold on

如果需要在一个界面中作多个图,每作完一个图后,如果需要作下一个图,需要先使用hold on.另外,hold on和hold off成对使用.


4.box on

画图的时候,加上box on命令,使坐标轴的对应一侧也有一条线封闭起来.

===========================================================================

下面从折线图、曲面图和图形说明与定制三个方面说明MATLAB作图的一些方法与技巧,注意,文中出现的单引号在MATLAB中实际运行的时候,需要改为MATLAB认可的单引号。

一、 作折线图

1.plot函数
   ①以x为横坐标y为纵坐标,作折线图
       x = [1 2 3 4 5 6 7 8 9 10];y = [5 2 3 5 7 14 10 4 2 3];plot(x,y,’:r*’);
   ②在同一个图中作出多组数据的折线图x1与y1对应,x2与y2对应
       x1 = [0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9];y1 = [6.2 9.1 5.5 3.9 2.7 1.5 1.5 2.6];
       x2 = [0.12 0.25 0.32 0.40 0.51 0.66 0.80 0.86];y2 = [1.5 3.5 1.7 3.9 1.1 2.1 6.7 3.3];

       plot(x1,y1,x2,y2);


2.fplot函数
   作函数在一个区间的变化图

   fplot(@(x)x^3-x+2,[-4,4]);


3.plot3函数
   按照点顺序作三维空间中的折线图

   x = [0.3 0.5 0.7 0.9 1.3];y=[1.3 0.9 1.5 1.5 3.4];z = [2.3 4.2 1.1 3.6 4.1];plot3(x,y,z);


4颜色标记和线型

   如

   x = [1 2 3 4 5 6 7 8 9 10];y = [5 2 3 5 7 14 10 4 2 3];plot(x,y,’-r*’);

   再如

   x1 = [0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9];y1 = [6.2 9.1 5.5 3.9 2.7 1.5 1.5 2.6];

   x2 = [0.12 0.25 0.32 0.40 0.51 0.66 0.80 0.86];y2 = [1.5 3.5 1.7 3.9 1.1 2.1 6.7 3.3];
   plot(x1,y1,’ :r*’,x2,y2,’-bo’);

   再如

   fplot(@(x)x^3-x+2,[-4,4],’-r.’);

   注意:从WORD中向MATLAB粘贴要求改单引号为MATLAB认可的单引号.


二、 作曲面图
1.meshgrid函数
   在做曲面图之前,须生成网格,返回值为两个矩阵

   xa = -2:0.1:2;ya = -2:0.1:2; [x,y] = meshgrid(xa,ya);


2.mesh函数
   绘制网面图

   xa = -2:0.1:2;ya = -2:0.1:2; [x,y] = meshgrid(xa,ya);z=x.^2+y.^2;mesh(x,y,z);


3.surf函数
   绘制网面图与mesh的唯一区别在于填充颜色不同

   xa = -2:0.1:2;ya = -2:0.1:2; [x,y] = meshgrid(xa,ya);z=x.^2+y.^2;surf(x,y,z);


4.contour函数
   绘制等高线
   xa = -2:0.1:2;ya = -2:0.1:2; [x,y] = meshgrid(xa,ya);z=x+y.^2;contour(x,y,z);
   含义是同一条线上的[x,y]对应的z值相同
   xa = -10:0.1:10;ya = -10:0.1:10; [x,y] = meshgrid(xa,ya);z=x.^2/3+2*x/4+y.^2;contour(x,y,z,[10 10]);

   取等高线中的一条,由此可见,contour函数可以用来绘制隐函数的网面图.


三、 图形说明与定制
1.title函数
   fplot(@(x)x^3-x+2,[-4,4]);

   title(‘函数x^2-x+2在区间[-4,4]的变化图’);


2.xlabel用于指明坐标轴含义
   xa = -2:0.1:2;ya = -2:0.1:2; [x,y] = meshgrid(xa,ya);z=x.^2+y.^2;mesh(x,y,z);
   title(‘函数z=x^2+y^2在[-2,2]x[-2,2]的曲面图’);

   xlabel(‘x’); ylabel(‘y’); zlabel(‘z’);


3.axis函数
   设定二维或三维坐标轴范围
   如二维情形
   fplot(@(x)x^3-x+2,[-4,4]);
   axis([-6,6,-20,20]);%小括号中有中括号
   再如三维情形
   xa = -2:0.1:2;ya = -2:0.1:2; [x,y] = meshgrid(xa,ya);z=x.^2+2*x+y.^2+3;mesh(x,y,z);

   axis([-2,2,-2,2,-20,30]);


4.grid on命令

    显示网格,grid off去掉网格.


5.图形编辑器

    包括插入标题、坐标轴名称和查看属性编辑器,点-隐藏图形编辑器退出


6.图形的使用

    编辑-复制图形,这样就可以粘贴到其他地方.




猜你喜欢

转载自blog.csdn.net/wangh0802/article/details/80211944
今日推荐