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 16 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
May 25 Python
windows系统下Python环境搭建教程
Mar 28 Python
Python实现快速计算词频功能示例
Jun 25 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
Python递归函数实例讲解
Feb 27 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
Python requests获取网页常用方法解析
Feb 20 Python
python初步实现word2vec操作
Jun 09 Python
PyCharm常用配置和常用插件(小结)
Feb 06 Python
浅谈Python 中的复数问题
May 19 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的mysqli_select_db()函数讲解
2019/01/23 PHP
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
一些javascript一些题目的解析
2010/12/25 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
JS实现留言板功能
2017/06/17 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
Python 列表list使用介绍
2014/11/30 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
python如何让类支持比较运算
2018/03/20 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
生产部经理岗位职责
2013/12/16 职场文书
财务管理职业生涯规划范文
2013/12/27 职场文书
会计专业个人求职信范文
2014/01/08 职场文书
预备党员思想汇报范文
2014/01/11 职场文书
《藏戏》教学反思
2014/02/11 职场文书
行政主管职责范本
2014/03/07 职场文书
班级寄语大全
2014/04/10 职场文书
教师业务培训方案
2014/05/01 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书