一、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);
作函数在一个区间的变化图
fplot(@(x)x^3-x+2,[-4,4]);
按照点顺序作三维空间中的折线图
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);
如
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);
绘制网面图
xa = -2:0.1:2;ya = -2:0.1:2; [x,y] = meshgrid(xa,ya);z=x.^2+y.^2;mesh(x,y,z);
绘制网面图与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);
绘制等高线
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]的变化图’);
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’);
设定二维或三维坐标轴范围
如二维情形
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]);
显示网格,grid off去掉网格.
包括插入标题、坐标轴名称和查看属性编辑器,点-隐藏图形编辑器退出
编辑-复制图形,这样就可以粘贴到其他地方.