matlab二维前缀和,MATLAB 绘图(二)

概述

本次的内容涉及到除了线图以外的绘图,包括离散绘图、极坐标绘图、曲面绘图和统计绘图。

离散绘图:茎干图、阶梯图和散点图

极坐标绘图:polar前缀

曲面绘图:surf 曲面图和 mesh 网格图

统计绘图:条形图、统计直方图和饼状图

子窗口

subplot 函数指的是将当前图窗划分为 m×n 网格,并在编号 p 指定的位置创建坐标区。

编号规则为:从第一行自左向右递增。

% subplot(m,n,p);

% 将绘图窗口分为 m 行 n 列的矩形区域

% 并在编号第 p 的区域中绘图

figure();

% 2*2 分割的第一块区域也就是左上角

subplot(2,2,1);

x = linspace(-3.8,3.8);

y_cos = cos(x);

plot(x,y_cos);

title('Subplot 1: Cosine')

% 2*2 分割的第二块区域也就是右上角

subplot(2,2,2);

y_poly = 1 - x.^2./2 + x.^4./24;

plot(x,y_poly,'g');

title('Subplot 2: Polynomial')

% 2*2 分割的第三、四块区域也就是下方

subplot(2,2,[3,4]);

% 也可以写作 subplot(2,1,2); 指的是同一区域。

plot(x,y_cos,'b',x,y_poly,'g');

title('Subplot 3 and 4: Both')

14eb7643ac9b

1.png

离散绘图

茎干图(stem)

stem 函数的功能是描述离散数据中的冲激函数,以绘图高度反映一维离散序列中脉冲的强度。

数据值对应每一个脉冲的强度。

figure(1)

X = linspace(0,2*pi,50)';

Y = cos(X);

subplot(2,1,1);

stem(X);

subplot(2,1,2);

stem(X,Y);

14eb7643ac9b

2.png

阶梯图(stairs)

stairs 函数的功能是描述离散数据中的阶跃函数,以绘图高度反映一维阶跃信号中的实时强度。

数据值为每一个时间周期的高度。

X = linspace(0,4*pi,40);

Y = sin(X);

figure(1);

subplot(2,1,1);

stairs(Y);

subplot(2,1,2);

stairs(X,Y);% 这种调用方式应当保证 X 有序

14eb7643ac9b

3.png

散点图(scatter)

scatter 函数绘制二维平面上的散点图,也就是不绘制曲线的 plot 函数。

输入参数为散点图的横坐标序列和纵坐标序列。

x = linspace(0,3*pi,200);

y = cos(x) + rand(1,200);

M_size = linspace(1,100,200);

figure(1);

subplot(2,1,1);

scatter(x,y);

subplot(2,1,2);

scatter(x,y,M_size);

14eb7643ac9b

4.png

极坐标绘图

我们直到直角坐标和极坐标系都是常用的坐标系,并且两种坐标系之间存在一定的转换关系,但是用 plot 函数绘制转换后的极坐标系图形总是不美观。

polar 函数是 MATLAB 中用于绘制极坐标图的函数。

polar 函数已经被 MATLAB 官方更替,更推荐使用的是新的函数方法:polarplot (新方法在旧版本的 MATLAB 如 2015b 版本仍不可用)。因此如果你在使用旧版本软件,使用 polar 方法;如果你在使用的版本支持 polarplot 函数,那就使用 polarplot 函数。

polarplot 函数就是极坐标系下的 plot 函数。以 polarplot(theta,rho) 形式调用。

theta = 0:0.01:2*pi; % 角度

rho = sin(2*theta).*cos(2*theta); % 幅值

figure(1);

polarplot(theta,rho);

% 此处有版本兼容问题,旧版本无法使用该函数

% 旧版本应当使用 polar(theta,rho);

14eb7643ac9b

5.png

同理,也有 polarscatter 函数。

曲面绘图

曲线上的点是无限的,于是计算机用散点序列代替直线;曲面上由无数曲线构成,自然类比想到使用网格代替平面。

surf 函数

surf 函数将创建一个三维曲面图。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度;此外,函数将对三维曲面进行渲染,每个区域的颜色与高度成比例。

x0 = 1:0.5:10;

y0 = 1:20;

[X,Y] = meshgrid(x0,y0);

% meshgrid 函数将创建两个由 x0*y0 构成的二维网格矩阵。

% X 表示网格中对应位置的 x0 值

% Y 表示网格中对应位置的 y0 值

% - 可以预见到对于同一个 y0 ,x0 值相同。

Z = sin(X) + cos(Y);

surf(X,Y,Z);

14eb7643ac9b

6.png

其他 surf 类型曲面图函数

surfc 函数:在 surf 函数的基础上,在底部绘制等高线图。

surfl 函数:在 surf 函数的基础上,用光线为三维图渲染。

mesh 函数

surf 函数将创建一个三维曲面图。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度;函数仅对于三维网格进行渲染,每个区域的颜色与高度成比例。

[X,Y] = meshgrid(-8:.5:8);

R = sqrt(X.^2 + Y.^2) + eps;

Z = sin(R)./R;

figure(1);

mesh(Z);

14eb7643ac9b

7.png

其他 mesh 类型曲面图函数

meshc函数:在 mesh 函数的基础上,在底部绘制等高线图。

meshz 函数:在 mesh 函数的基础上,每个网格高度以柱状反映。

统计绘图

bar 函数

bar 函数顾名思义是绘制条形图的函数。

由于统计图表有着多种形式的表现需求,这里使用子窗口绘图来实现。

x = 190:1:200;

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];

z = [2 2 3; 2 5 6; 2 8 9; 2 11 12];

figure(1);

subplot(2,3,1);

bar(y);

subplot(2,3,2);

bar(y,'r')

subplot(2,3,3);

bar(x,y);

subplot(2,3,4);

bar(y,0.4);

subplot(2,3,5);

bar(z);

subplot(2,3,6);

bar(z,'stacked')

14eb7643ac9b

8.png

其他 bar 类型函数:

bar3 函数:绘制三维条形图

barh 函数:绘制水平条形图

bar3h 函数:绘制三维水平条形图

histogram 函数

histogram 函数的功能是根据传入的数据绘制统计直方图。

x = randn(10000,1);

% 10000 个高斯分布随机数

nbins = 25;

% 直方图分布区间数量

figure(1);

subplot(2,1,1);

h = histogram(x);

subplot(2,1,2);

h = histogram(x,nbins);

14eb7643ac9b

9.png

其他 histogram 函数:

histogram2 函数:绘制二元统计直方图;

pareto 函数:绘制帕累托图

polarhistogram 函数:在极坐标系上绘制根据角度绘制分布图

pie 函数

pie 函数的功能是根据传入的比例序列绘制饼状图。

特别地:如果 pie(x) 中,

sum(x) < 1,仅绘制部分饼状图。

sum(x) > 1,先做归一化后绘制饼状图。

figure(1);

X = [1 3 0.5 2.5 2];

explode = [0 1 0 1 0];

labels = {'A','B','C','D','E'};

subplot(2,2,1);

pie(X);

% 归一化计算比例

subplot(2,2,2);

pie(X,explode);

% explode 选中的块会突出显示

subplot(2,2,3);

pie(X,labels);

% 以标签代替百分数

subplot(2,2,4);

x1 = [0.19 0.22 0.41];

pie(x1);

% 不足 100% 则绘制部分饼状图

14eb7643ac9b

10.png

其他 pie 类型函数:

pie3 函数:绘制三维饼状图;

其他可视化绘图

这部分内容极少使用,不需要在意。

heatmap 函数:根据数据集绘制热图;

wordcloud 函数:使用文本数据创建词云图;

geobubble 函数:以可视方式呈现特定地理位置的数据值

小结

本节中提到除了线图以外的另外四种常见绘图:离散绘图、极坐标绘图、曲面绘图和统计绘图。

值得一提的是,对于极坐标绘图的函数方法,官方已经给出更佳的更新,但旧版本中无法应用,这里给出的为新版本的方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值