MATLAB数学建模之画图汇总


Posted in Python onJuly 16, 2020

1. 二维数据曲线图

1.1 绘制二维曲线的基本函数

1.plot()函数
plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。
例:

t=0:0.1:2*pi; 
x=2 * t; 
y=t.*sin(t).*sin(t); 
plot(x, y);

MATLAB数学建模之画图汇总 

2. 含多个输入参数的plot函数

plot函数可以包含若干组向量对,每一组可以绘制出一条曲线。含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,…,xn,yn)
例:

x=linspace(0,2*pi,100);
plot(x,sin(x),x,2*sin(x),x,3*sin(x))

MATLAB数学建模之画图汇总 

3. 含选项的plot函数

Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示

线型 颜色 标记符号
-实线 b蓝色 .点 s方块
:虚线 g绿色 o圆圈 d菱形
.-点划线 r红色 x叉 v朝下三角符号
?双划线 c青色 +加号 ^朝上三角符号
m品红 *星号
y黄色 >朝右三角符号 p 五角星
k黑色 h 六角星
w白色

MATLAB数学建模之画图汇总 

例: 用不同的线型和颜色在同一坐标内绘制曲线 及其包络线。

x=(0:pi/100:2*pi)';
y1=2*exp(-0.5*x)*[1,-1];
y2=2*exp(-0.5*x).*sin(2*pi*x);
x1=(0:12)/2;
y3=2*exp(-0.5*x1).*sin(2*pi*x1);
plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp');

MATLAB数学建模之画图汇总 

在该plot函数中包含了3组绘图参数,第一组用黑色虚线画出两条包络线,第二组用蓝色双划线画出曲线y,第三组用红色五角星离散标出数据点。

例: 设置正弦曲线的线宽为 3,设置上三角形进行数据点的标记,并设置标记 点边缘为黑色,设置标记点填充颜色为红色,设置标记点的尺寸为 10,则 MATLAB 代码 如下:

% 横坐标轴 
x = linspace(0, 2*pi, 50); 
% 生成数据点,纵坐标轴 
y = 2 * sin(pi * x); 
% 绘图 
figure 
% 设置线的宽带为3 
plot(x, y, 'k--^', 'LineWidth', 3, ...   
  'MarkerEdgeColor', 'k', ... %设置标记点的边缘颜色为黑色   
  'MarkerFaceColor', 'r', ... %设置标记点的填充颜色为红色   
  'MarkerSize', 10)  %设置标记点的尺寸为10

MATLAB数学建模之画图汇总 

例: 利用五角星标记例两曲线的交叉点

% 横坐标轴 
x = linspace(0, 2*pi, 1000); 
% 生成数据点,纵坐标轴 
y1 = 0.2 * exp(-0.5 * x).* cos(4 * pi * x); 
y2 = 2 * exp(-0.5 * x) .* cos(pi * x); 
% 查找y1与y2相等点(近似相等)的下标 
k = find( abs(y1-y2) < 1e-2 ); 
%取y1与y2相等点的x坐标 
x1 = x(k); 
% 求y1与y2值相等点的y坐标 
y3 = 0.2 * exp(-0.5 * x1) .* cos(4 * pi * x1); 
% 绘图 
figure 
plot(x, y1, 'r-.', x, y2, 'k:', x1, y3, 'bp','LineWidth',2);

MATLAB数学建模之画图汇总

4. 双纵坐标函数plotyy

在Matlab中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy函数,它能把具有不同量纲,不同数量级的两个函数绘制在同一个坐标中,有利于图形数据的对比分析。使用格式为:plotyy(x1,y1,x2,y2)
x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左边的对应x1,y1数据对,右边的对应x2,y2。

x=0:pi/100:2*pi; 
% 生成曲线 
y1=0.2*exp(-0.5*x).*cos(4*pi*x); 
y2=2*exp(-0.5*x).*cos(pi*x); 
% 绘图 
figure 
plotyy(x,y1,x,y2); 
plot(x, y1, 'k-', x, y2, 'k-', 'LineWidth', 3)

MATLAB数学建模之画图汇总

1.2 绘制图形的辅助操作

1. 图形标注

title('图形名称')
xlabel('x轴说明')
ylabel('y轴说明')
text(x,y,'图形说明')
legend('图例1','图例2',…)

title、xlabel和ylabel函数分别用于说明图形和坐标轴的名称。

text函数是在坐标点(x,y)处添加图形说明。

legend函数用于绘制曲线所用线型、颜色或数据点标记图例,图例放置在空白处,用户还可以通过鼠标移动图例,将其放到所希望的位置。

除legend函数外,其他函数同样适用于三维图形,在三维中z坐标轴说明用zlabel函数。

例:绘制正弦和余弦曲线,设置图形的标题、x 轴和 y 轴的标注,设置曲线标 准。

% 横轴 
x=0:pi/50:2*pi; 
% 曲线数据 
y1=sin(x); 
y2=cos(x); 
% 绘图 
figure 
plot(x, y1, 'k-', x, y2, 'k-.') 
% 文本标注 
text(pi, 0.05, '\leftarrow sin(\alpha)') 
text(pi/4-0.05, 0.05, 'cos(\alpha)\rightarrow') 
% 标题标注 
title('sin(\alpha) and cos(\alpha)') 
% 坐标轴标注 
xlabel('\alpha') 
ylabel('sin(\alpha) and cos(\alpha)')

MATLAB数学建模之画图汇总 

2. 坐标控制

axis([xmin xmax ymin ymax zmin zmax])
如果只给出前四个参数,则按照给出的x、y轴的最小值和最大值选择坐标系范围,绘制出合适的二维曲线。如果给出了全部参数,则绘制出三维图形。
axis函数的功能丰富,其常用的用法有:

  • axis equal:纵横坐标轴采用等长刻度
  • axis square:产生正方形坐标系(默认为矩形)
  • axis auto:使用默认设置
  • axis off:取消坐标轴
  • axis on:显示坐标轴
  • axis tight:按紧凑方式显示坐标轴范围,即坐标轴范围为绘图数据的范围
  • grid on/off:命令控制画还是不画网格线

例:观察曲线 y=cos(tan(πx))在 x=0.5 附近的图形曲线

% x轴 
x = 0:1/3000:1; 
% 生成误差曲线 
y = cos(tan(pi*x)); 
% 绘图 
figure 
% 分裂窗口为2*1个子窗口 
subplot(2,1,1) 
plot(x,y) 
title('\itcos(tan(\pix))') 
% 坐标轴调整 
subplot(2,1,2) 
plot(x,y) 
axis([0.4 0.6 -1 1]); 
title('复杂函数的局部透视')

MATLAB数学建模之画图汇总

subplot(m,n,p)
该函数把当前窗口分成m×n个绘图区,m行,每行n个绘图区,区号按行优先编号。其中第p个区为当前活动区。每一个绘图区允许以不同的坐标系单独绘制图形。

1.3 绘制二维图形的其他函数

1. 对数坐标图
在实际应用中,经常用到对数坐标,Matlab提供了绘制对数和半对数坐标曲线的函数,其调用格式为:

semilogx(x1,y1,选项1,x2,y2,选项2,…)
semilogy(x1,y1,选项1,x2,y2,选项2,…)
loglog(x1,y1,选项1,x2,y2,选项2,…)

这些函数中选项的定义和plot函数完全一样,所不同的是坐标轴的选取。
semilogx函数使用半对数坐标,x轴为常用对数刻度,而y轴仍保持线性刻度。semilogy恰好和semilogx相反。
loglog函数使用全对数坐标,x、y轴均采用对数刻度。
例:绘制函数 y=ex" role="presentation">

% x轴 
x=0:0.5:5; 
% y轴 
y = exp(x); 
% 绘图 
figure 
% 笛卡尔坐标系 
subplot(4, 1, 1) 
plot(x, y, 'r-.') 
title('笛卡尔坐标系') 
% 半对数坐标系 
subplot(4, 1, 2) 
semilogx(x, y, 'g:') 
title('x轴为对数坐标系') 
subplot(4, 1, 3) 
semilogy(x, y, 'b-') 
title('y轴为对数坐标系') 
% 对数坐标系 
subplot(4, 1, 4) 
loglog(x, y, 'k:','LineWidth',4) 
title('对数坐标系')

MATLAB数学建模之画图汇总 

1. 饼图

  • - pie(x):绘制数据 x 的饼图,x 可以是向量或者矩阵,x 中的每一个元素将代表饼图的一个扇区,同时饼图中显示各元素总和的比例。
  • - pie(x, explode):绘制数据 x 的饼图,其中参数 explode 可以用来设置饼图中某个重要的扇区进行抽取式重点显示,这里需要注意的是,explode 向量的长度与 x 中的元素个数相等,并与 x 中的元素意义对应,explode 元素为非零值,对应的元素扇区将从饼图中分离显示,通常非零值都设置为 1。
  • - pie(x, labels):绘制数据 x 的饼图,其中参数 labels 可以用来设置饼图中各个扇区的显示标注,注意参数 labels 应该为字符串或者数字利用向量 X中的数据描绘饼图

例:有一位研究生,在一年中平均每月的费用为生活费 190 元,资料费 33 元, 电话费 45 元,购买衣服 42 元,其他费用 45 元。请以饼图表示出他每月的消费比例,并在 饼图中分离出使用最多的费用和使用最少的费用的切片。

% 数据准备 
x=[190 33 45 42 45]; 
% 分离显示设置 
explode=[1 1 0 0 0]; 
% 绘图 
figure() 
colormap hsv 
pie(x,explode,{'生活费','资料费','电话费','购买衣服','其他费用'}) 
title('饼图')

MATLAB数学建模之画图汇总 

2. 条形图
看例子:

%随机函数产生5*3的数组,对产生的数据取整 
Y = round(rand(5,3)*10); 
% 绘图 
subplot(2,2,1) 
bar(Y,'group') 
title 'Group' 
%堆型二维垂直条形图 
subplot(2,2,2) 
bar(Y,'stack') 
title('Stack') 
%堆型二维水平条形图 
subplot(2,2,3) 
barh(Y,'stack') 
title('Stack') 
%设定条形的宽度为1.5 
subplot(2,2,4) 
bar(Y,1.5) 
title('Width = 1.5')

MATLAB数学建模之画图汇总 

例:有一位研究生,在一年中平均每月的费用为生活费 190 元,资料费 33 元, 电话费 45 元,购买衣服 42 元,其他费用 45 元。请以柱状图表示出他每月的消费比例。 MATLAB 代码如下:

% 数据准备 
y=[190 33 45 42 45]; 
x=1:5 ;
% 绘图 
figure 
bar(x,y) 
title('柱状图'); 
set(gca,'xTicklabel',{'生活费','资料费','电话费','购买衣服','其他费用'})

MATLAB数学建模之画图汇总 

3. 排列图
排列图又称累托(Pareto)图,由一 个横坐标、两个纵坐标、多个按高低顺序 排列的条形和一条折线组成。其中,横坐 标表示各因素,左纵坐标表示频数,右纵 坐标表示频率,折线表示累积的频率。该 图能较好地分析各因素的重要性,可用于 寻找主要问题或主要原因。在MATLAB 中 pareto()函数用于绘制排列图,其调用格式如下:
pareto(y):绘制数据y的排列图。y值的大小用排列图条形的高度表示。pareto(y,x):绘制数据y的排列图。当x为数值时,用于指定数值型的横坐标。当 x 为字符串时,用于指定字符串型的横坐标。

Y=[100 98 97 90 90]; 
names={'第1名' '第2名' '第3名' '第4名' '第5名'}; 
pareto(Y,names)

MATLAB数学建模之画图汇总

2. 三维图形

2.1 绘制三维曲线

1.用plot3()函数画三维曲线
最基本的三维图形函数为plot3,它将二维绘图函数plot的有关功能扩展到三维空间,可以用来绘制三维曲线。其调用格式为:
plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…)
其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot的选项一样。当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵的列数。
例:

t=0:pi/50:2*pi;
x=8*cos(t);
y=4*sqrt(2)*sin(t);
z=-4*sqrt(2)*sin(t);
plot3(x,y,z,'p');
title('Line in 3-D Space');
text(0,0,0,'origin');
xlabel('X');ylabel('Y');zlabel('Z');grid;

MATLAB数学建模之画图汇总 

2. 三维网格图的绘制
在 MATLAB 中,进行三维图形绘制时,常常需要首先创建三维网格,也就是先创建 平面图的坐标系。在 MATLAB 中,常用 meshgrid()函数生成网格数据,其调用格式如下。
[X,Y]=meshgrid(x,y):用于生成向量 x 和 y 的网格数据,即变换为矩阵数据 X 和 Y, 矩阵 X 中的行向量为向量 x,矩阵 Y 的列向量为向量 y。[X,Y]=meshgrid(x):生成向量 x 的网格数据,函数等同[X,Y]=meshgrid(x,x)
[X,Y,Z]=meshgrid(x,y,z) :生成向量 x、y、z 的三维网格数据,生成的数据 X 和 Y 可分别表示三维绘图中的 x 和 y 坐标。
三维网格图形是指在三维空间内连接相邻的数据点,形成网格。在MATLAB中绘制三维网格图的函数主要有mesh()函数、meshc()函数和meshz()函数。其中,mesh()函数最常 用,其调用格式如下:
mesh(x,y,z):绘制三维网格图,x、y、z 分别表示三维网格图形在 x 轴、y 轴和 z 轴 的坐标,图形的颜色由矩阵 z 决定。
mesh(Z):绘制三维网格图,分别以矩阵 Z 的列下标、行下标作为三维网格图的 x 轴、y 轴的坐标,图形的颜色由矩阵 Z 决定。
mesh(...,C):输入参数C用于控制绘制的三维网格图的颜色。mesh(...,'PropertyName',PropertyValue,...):设置三维网格图的指定属性的属性值。
函数 meshc()可绘制带有等值线的三维网格图,其调用格式与函数 mesh()基本相同, 但函数 meshc()不支持对图形网格线或等高线指定属性的设置。
函数 meshz()可绘制带有图形底边的三维网格图,其调用格式与函数 mesh()基本相同, 但函数 meshz()不支持对图形网格线指定属性的设置。
另外,函数ezmesh()ezmeshc()ezmeshz()可根据函数表达式直接绘制相应的三维网格图。
由于网格线是不透明的,绘制的三维网格图有时只能显示前面的图形部分,而后面的 部分可能被网格线遮住了,没有显示出来。 MATLAB中提供了命令 hidden 用于观察图形后面隐藏的网格,hidden 命令的调用格式如下:
hidden on:设置网格隐藏部分不可见,默认情况下为此状态。
hidden off:设置网格的隐藏部分可见。
hidden:该命令用于切换网格的隐藏部分是否可见。

例:绘制简单的三维网格图

% 数据准备 
t=0:pi/10:pi; 
x=sin(t); 
y=cos(t); 
[X,Y]=meshgrid(x,y); 
z =X + Y;  
% 绘图 
figure 
mesh (z,'FaceColor','W','EdgeColor','K')
grid 
title('三维网格图');

MATLAB数学建模之画图汇总

2.2 三维表面图的绘制

三维表面图也可以用来表示三维空间内数据的变化规律,与之前讲述的三维网络图的 不同之处在于对网格的区域填充了不同的色彩。在 MATLAB 中绘制三维表面图的函数为 surf()函数,其调用格式如下:
surf(Z):绘制数据 Z 的三维表面图,分别以矩阵 Z 的列下标、行下标作为三维网格图的 x 轴、y 轴的坐标,图形的颜色由矩阵 Z 决定。
surf(X, Y, Z):绘制三维表面图,X、Y、Z 分别表示三维网格图形在 x 轴、y 轴和 z 轴的坐标,图形的颜色由矩阵 Z 决定。
surf(X, Y, Z, C):绘制三维表面图,输入参数 C 用于控制绘制的三维表面图的颜色。
surf(..., 'PropertyName', PropertyValue):绘制三维表面图,设置相应属性的属性值。
函数 surfc()用于绘制带等值线的三维表面图,其调用格式同函数 surf()基本相同,函数 surfl()可用于绘制带光照模式的三维表面图,与函数 surf()surfc()不同的调用格式如下:
surfl(...,'light'):以光照对象 light 生成一个带颜色、带光照的曲面。surfl(...,'cdata'):输入参数 cdata 设置曲面颜色数据,使曲面成为可反光的曲面。
surfl(...,s):输入参数 s 为一个二维向量[azimuth,elevation],或者三维向量[x,y,z],用于指定光源方向,默认情况下光源方位从当前视角开始,逆时针 45°。
例:简单对 surf()函数进行举例

% 数据准备 
xi=-10:0.5:10; 
yi=-10:0.5:10; 
[x,y]=meshgrid(xi,yi); 
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2); 
% 绘图 
surf(x,y,z)

MATLAB数学建模之画图汇总

2.3 三维切片图的绘制

在MATLAB中slice()函数用于绘制三维切片图。三维切片图可形象地称为“四维图”,可以在三维空间内表达第四维的信息,用颜色来标识第四维数据的大小。slice()函数的调用格式如下:
slice(v, sx, sy, sz):输入参数 v 为三维矩阵(阶数为 m x n x p),x、y、z 轴默认状态下分别为 1:m、1:n、1:p,数据 v 用于指定第四维的大小,在切片图上显示为不同的颜色,输入参数 sx、sy、sz 分别用于指定切片图在 x、y、z 轴所切的位置。
slice(x ,y, z, v, sx, sy, sz):输入参数 x、y、z用于指定绘制的三维切片图的 x、y、z轴。
slice(...,'method'):输入参数method用于指定切片图绘制时的内插值法,'method' 可以设置的参数有:'linear'(三次线性内插值法,默认)、'cubic'(三次立方内插 值法)、'nearest'(最近点内插值法)。
例:观察函数在-2≤x≤2、-2≤y≤2、-2≤z≤2 上的体积情况

% 数据准备 
xi=-10:0.5:10; 
yi=-10:0.5:10; 
[x,y]=meshgrid(xi,yi); 
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2); 
[x,y,z] = meshgrid(-2:.2:2, -2:.25:2, -2:.16:2); 
v = x.*exp(-x.^2-y.^2-z.^2); 
xslice = [-1.2,.8,2]; 
yslice = 2; 
zslice = [-2,0]; 
% 绘图 
slice(x,y,z,v,xslice,yslice,zslice)

MATLAB数学建模之画图汇总

到此这篇关于MATLAB数学建模之画图汇总的文章就介绍到这了,更多相关MATLAB 画图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
利用python获得时间的实例说明
Mar 25 Python
python 七种邮件内容发送方法实例
Apr 22 Python
9种python web 程序的部署方式小结
Jun 30 Python
Python文档生成工具pydoc使用介绍
Jun 02 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
详解python中sort排序使用
Mar 23 Python
Python实现12306火车票抢票系统
Jul 04 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
Python编译成.so文件进行加密后调用的实现
Dec 23 Python
jupyter notebook 重装教程
Apr 16 Python
Django权限设置及验证方式
May 13 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 Python
浅析Python迭代器的高级用法
Jul 16 #Python
python 使用递归的方式实现语义图片分割功能
Jul 16 #Python
Django serializer优化类视图的实现示例
Jul 16 #Python
python中plt.imshow与cv2.imshow显示颜色问题
Jul 16 #Python
Python实现GIF图倒放
Jul 16 #Python
浅谈python处理json和redis hash的坑
Jul 16 #Python
Python requests及aiohttp速度对比代码实例
Jul 16 #Python
You might like
php中JSON的使用与转换
2015/01/14 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
PHP7 弃用功能
2021/03/09 PHP
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
js有序数组的连接问题
2013/10/01 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
意向书范文
2014/03/31 职场文书
员工入职担保书范文
2014/04/01 职场文书
学校交通安全责任书
2014/08/25 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
三峡大坝导游词
2015/01/31 职场文书
肖申克救赎观后感
2015/06/02 职场文书
2015暑假假期总结
2015/07/13 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers