MENU

Matlab—进阶绘图

November 21, 2018 • Read: 689 • matlab

Logarithm Plots

画一些与对数(log)有关的图像,log,既可以是图像是log,又可以是坐标轴log,用一个例子来说明

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

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

函数作用
semilogxx 轴为对数刻度,y 轴为线性刻度
semilogyx 轴为线性刻度,y 轴为对数刻度
loglogx 轴和 y 轴均为对数刻度

plotyy()

有时候在一张图上花了两条曲线,但是这两条曲线如果对应的 y 的值域不一样,plotyy()函数可以在一个图上做出两个 y 轴

Histogram


首先是第一行的randn()函数,这个函数的的作用是产生正态分布的随机数或矩阵,其调用格式为:randn(m,n),返回一个m*n的满足正态分布的矩阵。

hist()函数调用格式为:hist(y,nbins),将向量 y等分到 nbins个等间隔范围内,并返回每个范围内元素的个数

bar

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

Pie Charts

pie()函数用于描绘圆饼图

x = [1 1 2 2 3 4 5];
pie(x);


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

Pie3

pie3()用于描绘三维饼图

x = [2 3 5];
pie3(x);

Polar chart

polar()用于描绘极坐标图像,其调用格式为:polar(theta,rho);,其中theta是用弧度制表示的角度,rho对应半径

stairs and stem charts

stairs()stem()两个函数的用法与plot()函数类似,只不过这两个,一个是画阶梯图,另个是画针状图

errorbar

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

fill

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

plot3

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

meshgrid

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

三维网格图

  • mesh(x,y,z):绘制由数组 X,Y,Z 所确定的曲面网格图,X,Y,Z都为二维数组时,要求它们的维数相同。X,Y 也可以是向量,但 Z 必须为二维数组,[m,n] =size(Z),此时必须满足:length(X) = nlength(Y) = m
  • mesh(z):相当于 X = 1:nY = 1:m,其中 [m,n] = size(Z)
  • mesh(...,C):二维数组 C 确定网格颜色,省略 C 时相当于 C=Z
  • mesh(...,'PropertyName',PropertyValue,...):设置属性值



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

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

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

等值线图

  • 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 的长度

三维表面图

  • surf(Z):相当于 X = 1:n ,Y = 1:m,其中 [m,n] = size(Z)
  • surf(Z,C):二维数组 C 确定网格颜色,省略 C 时相当于 C=Z
  • surf(...,'PropertyName',PropertyValue):设置属性值

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



一些图书图形的绘制



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 个距离相同的点

sphere

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

  • sphere,生成三位直角坐标系中的单位球体,该单位球体有 20*20 个面
  • sphere(n),在当前坐标系中画出有 n*n 个面的球体

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

最后编辑于: November 25, 2018
Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment