Matlab基础值之图像绘制

本博客介绍matlab绘制图像的几个函数,并给出了部分示例

基础知识

figure:用于开启新的绘图窗口。
hold on:在原图上继续绘图,直到遇到hold off结束。
subplot:用于分割绘制子图,例如subplot(2,2,1)表示将整个图划分为两行两列四个小子图,并开始画第一个子图。
axis:用于设置坐标轴范围。
title:用于设置图像坐标。
xlabel:用于设置x的label。
ylabel:用于设置y的label。

折线图

  • 当不指定x坐标的时候,默认坐标为数组编号。
  • 在一张图上绘制多个子图可以使用subplot。
  • 想在一张图(或者一张子图)上绘制多条折线,可以使用hold on和hold off控制来分别绘制两条折线,也可以将两个y放在一个数组中用于绘制,特别注意的是,该数组每一列代表一条直线!
% 生成数据

x=0:0.1:2*pi;
y1=sin(x);
y2=cos(x);
y=[y1',y2'];

% 开始绘图

subplot(2,2,1);
plot(y1);
subplot(2,2,2);
plot(y2);
subplot(2,2,3);
plot(y);
subplot(2,2,4);
hold on;
plot(y1);
plot(y2);
hold off;

Matlab基础值之图像绘制
下面的例子给定了图像的横坐标。plot(x,y)和plot(x,y1,x,y2)的结果一致。

% 生成数据
x=0:0.1:2*pi;
y1=sin(x);
y2=cos(x);
y=[y1',y2'];
% 开始绘图
subplot(1,2,1);
plot(x,y);
subplot(1,2,2);
plot(x,y1,x,y2);

Matlab基础值之图像绘制
设置图像的颜色,线型,数据标注点

  • 颜色设置: b蓝色,g绿色,r红色,c青色,m紫色,y黄色,k黑色,w白色。
  • 线条设置: :点线,-实线,–虚线,-.点画线。
  • 数据标注点设置: .实点,o圆圈,x叉点,+十字,*型号,s方块,d钻石,v下三角,^上三角,<左三角,>右三角,p五角星,h六角星。
% 生成数据
x=0:0.1:2*pi;
y1=sin(x);
y2=cos(x);
y=[y1',y2'];
% 开始绘图
subplot(2,2,1);
plot(x,y,'b:o'); 
subplot(2,2,2);
plot(x,y,'r--x');
subplot(2,2,3);
plot(x,y,'y-.+');
subplot(2,2,4);
plot(x,y,'m-p');

Matlab基础值之图像绘制
加上标题,x,y坐标标注,图例等信息

% 生成数据
x=0:0.1:2*pi;
y1=sin(x);
y2=cos(x);
y=[y1',y2'];
% 开始绘图
plot(x,y);
legend('sinx','cosx'); % 设置图例
title("这里是图像标题"); % 标题
axis([-pi/2,2.5*pi,-1.5,1.5]);
xlabel('x'); % x label
ylabel('y'); % ylable

Matlab基础值之图像绘制

绘制柱形图

函数:bar(x,y,width,other)

bar是垂直柱状图,barh是水平柱状图,bar3三维柱状图,barh3水平三维柱状图(三维多一个参数detached, 且为默认)。

参数:

x:横坐标,为一个有m个元素的向量。
y:纵坐标,如果是一个向量,则有m个柱子,每个x都有一个柱子。如果是mxn的矩阵,则每一个x都有n个柱子,一共有m*n个柱子。
width:默认是0.8,超过1会重叠。
other:'stacked’或者 ‘grouped’ 表示分组方式,默认是grouped。

% 生成数据
x=[1,2,3,4,5];
y1=rand(1,5)*10;
y2=rand(5,3)*10;
% 开始绘图
subplot(2,2,1);
bar(x,y1,0.8);
title("只有一组数据");
axis([0,6,0,10]);
xlabel('x'); % x label
ylabel('y'); % ylable

subplot(2,2,2);
bar(x,y2,0.8);
title("有多组数据");
legend('组1','组2'); % 设置图例
axis([0,6,0,10]);
xlabel('x'); % x label
ylabel('y'); % ylable

subplot(2,2,3);
barh(x,y1,0.8);
title("水平柱状图");
axis([0,10,0,6]);
xlabel('x'); % x label
ylabel('y'); % ylable

subplot(2,2,4);
bar(x,y2,0.8,'stacked');
title("有多组数据");
axis([0,6,0,30]);
xlabel('x'); % x label
ylabel('y'); % ylable

Matlab基础值之图像绘制

绘制饼形图

arr=1:4;
pie(arr); % 绘制饼状图,不突出显示任何元素。
pie(arr,[0,0,0,0]); % 绘制饼状图,不突出显示任何元素。
pie(arr,[0,0,1,0]); % 绘制饼状图,突出显示第三个元素。

% 绘制饼形图
arr=1:4;
subplot(2,2,1);
pie(arr);
title("绘制饼状图,不突出显示任何元素");
subplot(2,2,2);
pie(arr,[0,0,0,0]);
title("绘制饼状图,不突出显示任何元素");
subplot(2,2,3);
pie(arr,[0,0,1,0]); 
title("绘制饼状图,突出显示第三个元素");
subplot(2,2,4);
pie(arr,[1,0,1,0]);
title("突出显示第一个和第三个元素");

Matlab基础值之图像绘制

绘制直方图

arr=1:100;
hist(arr,10); % 将横坐标划分为10份来绘制直方图。
hist(arr,[10,30,50,70,90]); % 显式指出直方图的横纵坐标。
num=hist(arr,[10,30,50,70,90]); % num为数组,表示处于每一段的数目。

arr=rand(1,100)*100;
subplot(1,2,1);
hist(arr,10);
title("将横坐标划分为10份来绘制直方图");
subplot(1,2,2);
hist(arr,[10,30,50,70,90]);
title("显式指出直方图的横纵坐标");

Matlab基础值之图像绘制

绘制其它图像

% 绘制阶梯图
subplot(2,2,1);
x=0:0.5:2*pi;
y1=sin(x);
stairs(x,y1,'b-o');
title("绘制阶梯图像");
axis([-0.5,2*pi+0.5,-1.5,1.5]);

% 绘制火柴图
subplot(2,2,2);
x=0:0.3:2*pi;
y1=sin(x);
stem(x,y1,'fill');
title("绘制火柴图");
axis([-0.5,2*pi+0.5,-1.5,1.5]);

% 绘制函数图像
subplot(2,2,3);
fun1='sin(x)';
ezplot(fun1,[0,2*pi]); % 第二个参数为x的取值范围
title("绘制函数图像,使用ezplot ");

subplot(2,2,4);
fplot(@(x)sin(x),[0,2*pi]);
title("绘制函数图像,使用fplot");

Matlab基础值之图像绘制
三维图形的绘制

% 三维曲线
subplot(1,2,1);
y_sin=sin(x);
y_cos=cos(x);
plot3(x,y_sin,y_cos,'b-*');
title("三维曲线图");
% 三维曲面
subplot(1,2,2);
x=-5:0.1:5;
y=-4:0.1:4;
[X,Y]=meshgrid(x,y); % 得到xoy面网格点
Z = X.^2 + Y.^2;
mesh(X,Y,Z);
title("三维曲面图");

Matlab基础值之图像绘制

上一篇:matlab测量计算信号的相似度


下一篇:Matplotlib练习9:subplot