前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlab—进阶绘图

matlab—进阶绘图

作者头像
mathor
发布2018-07-24 14:54:38
2.4K0
发布2018-07-24 14:54:38
举报
文章被收录于专栏:mathor

十、进阶绘图

10.1 Logarithm Plots

这里我们要讲的是画一些与对数(log)有关的图像,这里的log,既可以是图像是log,又可以是坐标轴是log,我们接下来用一个例子来说明

图10-1 示例1

我们首先看到第一个函数logspace(a,b,c),这个函数的作用与linspace()差不多,这个函数的作用是创建一个以10^a为起始,10^b为终止,中间被等分成c个的数据数组,所以x = [10^-1,10^1],那么y = [10^-2,10^2]

重点主要放在semilogx()、semilogy()、loglog()这三个函数上,他们的作用见下表

函数

作用

semilogx

x轴为对数刻度,y轴为线性刻度

semilogy

x轴为线性刻度,y轴为对数刻度

loglog

x轴和y轴均为对数刻度

10.2 plotyy()

我们有时候在一张图上花了两条曲线,但是这两条曲线如果对应的y的值域不一样,那该怎么办呢?这里就有一个函数plotyy(),这个函数可以在一个图上做出两个y轴,下面给出示例

图10-2 plotyy函数

这里有一些比较陌生的知识,之前没讲到过,大家下去了解,我在这就不讲了,大家只需要掌握前四行代码即可

10.3 Histogram

先给出示例

图10-3 hist函数

首先是第一行的randn函数,这个函数的的作用是产生正态分布的随机数或矩阵,其调用格式为:randn(m,n),返回一个m*n的满足正态分布的矩阵,这里既然讲到了randn函数,下面我就给出个表,把与它类似的函数的用法都给出来

函数名

调用格式

说明

rand

rand(m,n)

生成m行n列的均匀分布在(0,1)之间的随机数

randn

rand(m,n)

生成标准正态分布的随机数(均值为0,方差为1)

randi

randi(max)randi(max,m,n)

生成范围在(0,max)之间的一个随机数或矩阵

random

random(‘norm’,a,b,m,n)

生成一个m行n列均值为a、标准差为b的的正态分布的随机数

讲完了randn函数,我们往下看,进入本节的主要函数hist,其调用格式为:his(y,nbins),将向量y等分到nbins个等间隔范围内,并返回每个范围内元素的个数

10.4 bar

matlab中bar函数的作用是绘制直方图,常用于统计或数据采集,它共有四种形式:bar、bar3、barh、bar3h,其中bar和bar3分别用来绘制二维和三维竖直方图,barh和bar3h分别用来绘制二维和三位水平直方图,其调用格式为:bar(x,y),其中x必须单调递增或递减,y为m*n的矩阵,产生的结果为m组,每组n个垂直柱。bar(...,’grouped’),使同一组直方条紧紧靠在一起。bar(...,’stack’),把同一组数据描述在一个直方条上,下面给出示例

图10-4 bar函数

10.5 Pie Charts

pie函数用于描绘圆饼图

10.5.1pie(x)

利用向量x中的数据描绘饼图

示例:

图10-5 pie函数

注意,x中的数据被看作频数,饼图中的比例:x[i]/sum(x),当x中所有元素的元素和sum(x)<1时,图形不是一个整圆,例如x = [0.1,0.2,0.3]时,得到

图10-6 示例2

10.5.2 pie(x,{‘...’,’...’,’...’})

x的意义同上,’...’是标注,示例:

图10-7 示例3

10.5.3 pie3

pie3用于描绘三维饼图,示例:

图10-8 pie3函数

10.6 Polar chart

polar可用于描绘极坐标图像,其调用格式为:polar(theta,rho);,其中theta是用弧度制表示的角度,rho是对应的半径,下面我们给出一个示例

图10-9 polar函数

10.7 stairs and stem charts

stairs和stem两个函数的用法与plot函数类似,只不过这两个,一个是画阶梯图,另个是画针状图,我以简单的sin函数为例,用这两个函数做出它的图像

图10-10 stairs and stem

10.8 errorbar

errorbar顾名思义,就是指有误差范围的,其调用格式为:errorbar(x,y,l,u),x是自变量,y是因变量,l是y的变动下限,u是y的变动上限,或者errorbar(x,y,e),e是y的变动绝对值,举个例子

图10-11 errorbar函数

10.9 fill

fil(x1,y1,选项1,x2,y2,选项2,······)按向量元素的下标渐增次序依次用直线段连接x,y对应元素定义的数据点。假如这样连线所得的折线不封闭,那MATLAB会自动将折线首尾连接起来,形成封闭多边形。然后在多边形内部涂满指定颜色,下面给出示例

图10-12 fill函数

10.10 plot3

三维曲线函数plot3,其调用格式为:plot(x,y,z,’style’);,x,y,z分别对应三个坐标轴,style可以是线的颜色,风格样式,下面给出示例

图10-13 plot3函数

10.11 meshgrid

我们上面讲的3d画图的方法是关于线的,那如果我们想画一个与能呈现出面的图,就要用到meshgrid函数,其调用格式为:[x,y] = meshgrid(x,y);由向量x和y生成二维数组,用来计算二元函数f(x,y)的值z=f(x,y)

10.11.1 三维网格图

mesh(x,y,z):绘制由数组X,Y,Z所确定的曲面网格图,X,Y,Z 都为二维数组时,要求它们的维数相同。X,Y 也可以是向量,但 Z 必须为二维数组, [m,n] = size(Z),此时必须满足:length(X) = n 且 length(Y) = m

mesh(z):相当于X = 1:n ,Y = 1:m,其中 [m,n] = size(Z)

mesh(...,C):二维数组C确定网格颜色,省略C时相当于 C=Z

mesh(...,'PropertyName',PropertyValue,...):设置属性值

示例:

图10-14 mesh函数

图10-15 hidden off

这里我多加了个hidden off,这个命令是使每个四边形区域不填充任何颜色,是空的,这样就可以看到后面的图像

meshz(X,Y,Z):调用方式与mesh相同,在mesh的基础上屏蔽边界面

示例:

图10-16 meshz函数

meshc(X,Y,Z):调用方式与mesh相同,在mesh的基础上增加等高线

示例:

图10-17 meshc函数

10.11.2 等值线图

contour是等高线绘制函数,其调用格式为:

contour(z),根据矩阵z画出等高线,z是以x,y为平面的高度,z必须是一个至少二维的矩阵,x,y轴的范围是[1,n]和[1,m],[m,n] = size(z)

contour(z,n),用n条水平线来绘制z的等高线

contour(z,v),是以向量v中的数据来绘制矩阵z的等高线,等高线的个数等于向量v的长度

示例:

图10-18 contour函数

10.11.3 三维表面图

surf(Z):相当于X = 1:n ,Y = 1:m,其中 [m,n] = size(Z)

surf(Z,C):二维数组C确定网格颜色,省略C时相当于 C=Z

surf(...,'PropertyName',PropertyValue):设置属性值

示例:

图10-19 surf函数

surfc(X,Y,Z):调用方式与surf相同,在surf的基础上增加等高线

示例:

图10-20 surfc函数

10.11.4 绘制一些常见的三维表面

(1)先根据x,y,z矩阵确定网格点

(2)用网格线连接在同一行中的网格点

(3)用网格线连接在同一列中的网格点

(4)用颜色数组C确定网格线(面)的颜色

1. 用surf()绘制四边形平面

绘图思路:把四个定点分成2行2列,将相应的坐标放进x,y,z矩阵即可,同理,对2n边形,可将2n个顶点分成2行n列或n行2列进行处理

示例:

图10-21 示例4

2. 用surf()绘制三角形平面

绘图思路:想象一下,有两个A点,只不过他们完全重合,这样就有四个顶点了,可以分成2行2列,将相应的坐标放进x,y,z矩阵即可绘制

示例:

图10-22 示例5

3. 绘制一个长方体表面图(共六个面)

图10-23 示例6

4. 一些特殊图形的绘制

图10-24 示例7

图10-25 示8

图10-26 示例9

图10-27 示例10

10.12 cylinder

matlab为我们提供了绘制柱面的函数cylinder,其调用格式为:

[x,y,z] = cylinder,返回半径为1、高度为1的圆柱面x,y,z轴的坐标值,圆柱面有20个距离相同的的点

[x,y,z] = cylinder(r),返回半径为r,高度为1的柱面的x,y,z轴的坐标值,柱面有20个距离相同的点

[x,y,z] = cylinder(r,n),返回半径为r,高度为1的柱面的x,y,z轴的坐标值,柱面有n个距离相同的点

示例:

图10-28 cylinder函数

10.13 sphere

matlab为我们提供了绘制球面的函数sphere,其调用格式为:

sphere,生成三位直角坐标系中的单位球体,该单位球体有20*20个面

sphere(n),在当前坐标系中画出有n*n个面的球体

示例:

图10-29 sphere函数

10.14 ellipsoid

matlab为我们提供了绘制椭球面的函数ellipsoid,其调用格式为:

[x,y,z] = ellipsoid(xc,yc,zc,a,b,c,n),返回绘图数据,x,y,z均为(n+1)*(n+1)的二维数组

[x,y,z] = ellipsoid(xc,yc,zc,a,b,c),返回绘图数据,n = 20

示例:

图10-30 ellipsoid函数

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档