MATLAB数据可视化
二维绘图
plot命令
plot(y)
x轴为默认。
例如:
>> t = 1:0.1:10;
>> y = sin(t);
>> plot(y)
结果:
plot(x,y)
指定x轴范围
>> t = 1:0.1:10;
>> y = sin(t);
>> plot(t,y)
结果:
可以同时绘制多个函数图像
>> t = 1:0.1:10;
>> y = [sin(t)+2;cos(t)+1];
>> plot(t,y)
% 或者
plot(x,cos(x),x,sin(x))
结果:
plot(x,y,s)
此格式用于绘制不同的线型,点标和颜色的图形,其中s为字符,可以代表不同的线型、点标和颜色。
例如:
>> t = 1:0.1:10;
>> y = sin(t);
>> plot(t,y,'--ro')
结果:
其中s中字符的顺序不是固定的。
常见的二维绘图常用设置选项
选项 | 说明 |
---|---|
- | 实线 |
: | 点线 |
-. | 点划线 |
- - | 虚线 |
y | 黄色 |
m | 紫红色 |
c | 蓝绿色 |
r | 红色 |
g | 绿色 |
b | 蓝色 |
w | 白色 |
k | 黑色 |
. | 点 |
o | 园 |
+ | 加号 |
* | 星号 |
x | x符号 |
s | 方形 |
d | 菱形 |
v | 下三角 |
^ | 上三角 |
< | 左三角 |
> | 右三角 |
p | 正五边形 |
其中前面几个是图像线的格式,中间是线的颜色,后边是关键点(自定义x对应y的点)的标记。
fplot()
plot命令是将从外部输入或通过函数数值计算得到的数据矩阵转化为连线
图。而在实际的应用中,用户可能并不知道某一个函数随自变量变化的趋势,此时若采用plot。命令来绘图,则有可能会因为自变量的取值间隔不合理而使曲线图形不能反应出自变量在某些区域内函数值的变化情况。当然用户可以将自变量间隔取得足够小以体现函数值随自变量变化的精确曲线,但是这样会使数据量变大。
而fplot命令就可以很好地解决这个问题。flet命令用于指导如何通过函数来取得绘图的数值点矩阵。该命令通过内部的自适应算法来动态决定自变量的取值间隔,当函数值变化缓慢时,间隔取大一点;变化剧烈时(即函数的二阶导数很大),间隔取小一点。该命令的使用格式如下:
fplot(f,lims,选项)
f代表一个函数,通常使用函数句柄的形式,lims为x轴的取值范围,用二元向量[xmin,xmax]描述,默认值为[-5,5]。选项定义与plot函数相同。
例如:
- 创建函数,并保存为myfun.m
function Y = myfun(x)
Y = 200 * sin(1./tan(pi.*x));
End
- 用
fplot命令求得坐标点
[X,Y] = fplot('myfun',[-0.1,0.1],2e-4);
- 画图
plot(X,Y)
结果:
三维绘图
plot3()
是用来绘制曲线。
例如:
>> t = [0:pi/100:2*pi];
>> x = [sin(t) sin(t)];
>> y = [cos(t) cos(t)];
>> z = [(sin(t)).^2+(cos(t)).^2 ((sin(t)).^2+(cos(t)).^2 +1)];
>> plot3(x,y,z)
结果:
mesh() 函数——绘制参数网状表面图
【功能】绘制三维曲面网格图。三维曲面网格图的最大优点是较好地解决了数据在三维空间的可视化问题。
【语法】mesh( z ),z 为待绘制函数。
示例代码如下:
x=-8:0.5:8;
y=x';
X=ones(size(y))*x;
Y=y*ones(size(x));
R=sqrt(X.*X+Y.*Y);
z=sin(R)./R;
mesh(z) %大家只需了解mesh()的效果就行,不用纠结上面代码
surf() 函数——绘制三维阴影曲面图
【功能】在矩形区域内显示三维带阴影的曲面图。
【语法】surf( z ),z 为待绘制函数。
示例代码如下:
x=-8:0.5:8;
y=x';
X=ones(size(y))*x;
Y=y*ones(size(x));
R=sqrt(X.*X+Y.*Y);
z=sin(R)./R;
surf(z) %大家只需了解surf()的效果就行,不用纠结上面代码
辅助操作
保留上一次图像
hold on
例如
plot(x1,y1)
hold on
plot(x2,y2)
figure:重新打开一个绘制窗口
例如
plot(x1,y1)
figure
plot(x2,y2)
显示背景网格
grid on
加上标题
title('标题 ')
%x轴,y轴的
xlable(' ')
ylable(' ')
让x、y轴单位长度一样
axis equal
meshgrid()、meshc和meshz
meshgrid()
命令的作用是将给定的区域按一定的方式划分成平面网格,该网格可以用来绘制三维曲面。
meshc
:绘制等高线meshz
:绘制函数边界
特殊图形
二维特殊图形函数
三维特殊图形函数
bar3
bar3函数绘制三维条形图,常用格式为:bar3(y),bar3(x,y)。在第一种格式中,y的每一个元素对应于一个条形。第二种格式在x指定的位置绘制y中元素的条形图。
stem3
stem3函数绘制离散序列数据的三维杆图,常用格式为:stem3(z),stem3(x,y,z)。第一种格式将数据序列z表示为从xy平面上延伸的杆图,x和y自动生成。第二种格式在x和y指定的位置上绘制数据序列z的杆图,x,y,z的维数必须相同。
pie3
pie3函数绘制三维饼图,常用格式为:pie3(x),其中x为常量,用x中的数据绘制一个三维饼图。
fill3
fill3函数可以在三维空间内绘制出填充过的多边形,常用格式为:fill3(x,y,z,c)使用x、y、z作为多边形的顶点,而c指定了填充的颜色
图形处理
图形标注
坐标轴和图形标题
xlable()
ylable()
zlable()
title()
例如:
title('正弦函数','fontsize',12,'fontweight','bold','fontname','隶书')
其中
'fontsize',12
设置是字体大小,'fontweight','bold'
设置了字体粗细,'fontname','隶书'
设置了字体名。
MATLAB中常见的字符转换
控制字符串 | 转换字符串 |
---|---|
\alpha | α \alpha α |
\beta | β \beta β |
\gamma | γ \gamma γ |
\delta | δ \delta δ |
\epsilon | ϵ \epsilon ϵ |
\zeta | ζ \zeta ζ |
\eta | η \eta η |
\theta | θ \theta θ |
\lambda | λ \lambda λ |
\mu | μ \mu μ |
\xi | ξ \xi ξ |
\pi | π \pi π |
\omega | ω \omega ω |
\tau | τ \tau τ |
\Sigma | Σ \Sigma Σ |
\kappa | κ \kappa κ |
图例标注:legend
标注的位置
- 0:自动定位,使得标注图标与图形重叠最少。
- 1:默认值,置于图形的右上角。
- 2:置于图形的左上角
- 3:置于图形的左下角
- 4:置于图形的右下角
- -1:置于图形的右外侧
例如:
x = -pi:pi/20:pi;
plot(x,cos(x),'-ro',x,sin(x),'-.b')
h = legend('cos','sin');
图形数据取点:ginput
用法格式如下
(1)[x,y] = ginput(n) 函数从当前的坐标图上选择n个点,并返回这n个点的相应的坐标向量x、y。n个点可由鼠标定位。用户可以按下回车键在输入n个点之前终止输入;
(2)[x,y] = ginput 函数获得任意个数的输入点,直到用户按下回车键为止并返回这n个点的相应的坐标向量x、y;
(3)[x,y,button] = ginput(n) 函数从当前的坐标图上选择n个点,并返回这n个点的坐标向量值x、y和键或按钮的标示。参数button是一个整数向量,显示用户按下哪一个鼠标键或返回ASCII码值。