数据可视化二:Matlab数据可视化(一)
目录:
1、Matlab离散数据可视化:
2、二维曲线绘制实验:
1、Matlab离散数据可视化:
绘制离散函数的图形,其中自变量的取值范围是(0,16)的整数。
思考:根据如下指令,试着修改颜色、线型、
plot(x, y, 'CLM');%控制颜色,线形状,点C 代表颜色(Colors),L 代表曲线的格式(Line Styles),M代表曲线所用的线标(Markers)。
线型 线方式: - 实线 :点线 -. 虚点线 - - 波折线。
线型 点方式: . 圆点 +加号 * 星号 x x形 o 小圆
颜色: y黄; r红; g绿; b蓝; w白; k黑; m紫; c青.
答:程序分析:
图1.1 定义函数
①n=1:0.2:15;%代表一个列向量,这个向量的第一个元素是1,最后一个元素是15,而每两个元素之间的差是0.2;
②y=1./((n-3).^2+1)+1./((n-9).^2+4);%1后面的.指的是n的输入可能是向量或矩阵,加点之后函数对矩阵也适用,可以实现程序的向量化,提高效率;
③plot(n,y,'*')%plot函数用于x轴和y轴均为线性刻度,列出y与n之间平面绘图,图线形态改为*
结果如图:
图1.2 运行结果
修改测试:
xlabel('Input Value'); % x轴注解
ylabel('Function Value'); % y轴注解
title('Two Trigonometric Functions'); % 图形标题
legend('y = sin(x)','y = cos(x)'); % 图形注解
grid on; % 显示格线
图1.3 程序代码
运行结果:
图1.4 运行结果
2、二维曲线绘制实验:
2.1 设计实验演示验证plot
设置三个函数y,z,h均以x作为变量,验证函数plot,subplot,set, axis,并使用grid on为图形加网格, box on加边框线。
x=0:0.1:5;
y=sin(x);
z=cos(x);
h=tan(x);
subplot(2,1,1);
plot(x,y);
subplot(2,1,2);
plot(x,z);
axis([0 4 0 20]);
h=plot(x,y);
set(h,'color','b');
set(gca,'XGrid','on','YGrid','off');
set(gca,'color','g');
grid on
box on
思考:使用Matlab help指令(或百度),了解subplot,set,axis的用法。
答:(1)matlab中subplot(m,n,p)可以在一个figure中画m×n个子图,p可以指定子图的位置,一般情况下p为单个数字,p为向量时可以合并多个子图为一个子图。
(2)matlab为每个显示的对象创建与之对应的句柄。通过对象句柄,可以调整图形的属性。get和set函数用于查询和设置句柄图形对象的属性。
(3)gca表示当前绘图区域
(4)对象句柄:一个对象变量,一个标识符,用来标识对象的。
代码说明:
x=0:0.1:5; % 代表一个列向量,这个向量的第一个元素是0,最后一个元素是5,而每两个元素之间的差是0.1;
y=sin(x); % 设置y函数
z=cos(x); % 设置z函数
h=tan(x); % 设置h函数
subplot(2,1,1); % 在一个figure中绘制2*1个子图,指定第一个子图的位置
plot(x,y); % 将y函数绘制在第一个子图的位置
subplot(2,1,2); % 指定第二个子图的位置
plot(x,z); % 将z函数绘制在第二个子图的位置
axis([0 4 0 20]); % 设置x轴的范围为0到4,y轴的范围为0到20
h=plot(x,y); % 创建了一个图像,引用句柄h定义为函数plot(x,y),上面的axis函数失效
set(h,'color','b'); % 设置变量h的颜色为蓝色
set(gca,'XGrid','on','YGrid','off'); % 当前绘图区域绘制x轴垂直网格线,不绘制y轴网格线
set(gca,'color','g'); % 当前绘图区域设置背景色为绿色
grid on % 在图像中显示网格线
box on % 将图轴方框绘制出来
运行结果:
图2.1 运行结果
2.2 设计函数y1=2e-0.5x和y2=cos(4πx)绘制其曲线,为其添加title(图形名称) ,label(x轴说明),ylabel(y轴说明),text(x,y,图形说明),legend(图例1,图例2,…)。
x=0:pi/100:1*pi;
y1=2*exp(-0.5*x);
y2=cos(4*pi*x);
plot(x,y1,x,y2)
title('x from 0 to 2{\pi}');
xlabel('Variable X');
ylabel('Variable Y');
text(0.8,1.5,'曲线y1=2e^{-0.5x}');
text(2.5,1.1,'曲线y2=cos(4{\pi}x)');
legend(‘y1’,’y2’)
思考:使用Matlab菜单,直接进行title,legend的修改。使用Matlab help指令(或百度),了解text的用法。
答:(1)text函数用于在图形中的指定位置上显示字符串。
(2)legend函数用于对各种图标进行标注
代码修改如下:
图2.2 程序代码
close all % 关闭所有的图形视窗
x=0:pi/100:1*pi; % 定义x列向量,这个向量的第一个元素是0,最后一个元素是π,而每两个元素之间的差是π/100;
y1=2*exp(-0.5*x); % 定义y1函数;
y2=cos(4*pi*x); % 定义y2函数;
plot(x,y1,x,y2) % 在同一个figure中绘制y1和y2函数;
title('两条曲线测试'); % 给绘制的图一个标题;
xlabel('变量X'); % x轴注释;
ylabel('变量Y'); % y轴注释;
text(0.8,1.5,'y1'); % 在(0.8,1.5)的坐标点显示字符串“y1”;
text(1.8,0.3,'y2'); % 在(1.8,0.3)的坐标点显示字符串“y2”;
legend('y1=2e^(-0.5x)','y2=cos(4*pi*x)'); % 对图标进行标注;
axis([0 3.2 -1.1 3]); % 设置x轴的显示范围为0到3.2,y轴的显示范围为-1.1到3;
运行结果:
图2.3 运行结果
2.3 设计函数y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx),并在同一坐标内绘制曲线,验证hold on/off命令的切换。
x=0:pi/100:2*pi;
y1=0.2*exp(-0.5*x).*cos(4*pi*x);
plot(x,y1)
hold on
y2=2*exp(-0.5*x).*cos(pi*x);
plot(x,y2);
hold off
思考:去掉hold on/hold off结果的区别?
答:hold on:在当前图的轴中画了一幅图,再画另一幅图时,原来的图还在,与新图共存。
hold off:在当前图的轴中画了一幅图,再画另一幅图时,原来的图不在了,原图被替换为新图。
(1)存在hold on/hold off:
图2.4 运行结果
(2)删除hold on,只有y2存在,y1不存在了:
图2.5 运行结果
2.4 设计函数x=exp(i*t)和y=[x;2*x;3*x]'在同一坐标中,绘制3个同心圆,并加坐标控制,并使用 grid on加网格线, box on加坐标边框,axis equal使坐标轴采用等刻度。
t=0:0.01:2*pi;
x=exp(i*t);
y=[x;2*x;3*x]';
plot(y) grid on; %加网格线
box on; %加坐标边框
axis equal %坐标轴采用等刻度
思考:grid on和grid off进行网格线的控制,如何进行网格线坐标的控制?(采用set命令 ,例如set(gca,'YTickMode','manual','YTick',[-16384,0,16384])
set(gca,'XTickMode','manual','XTick',[-21846,-10922,0,10922,21846]))
答:(1)程序分析:
t=0:0.01:2*pi; % 定义t列向量,这个向量的第一个元素是0,最后一个元素是2π,而每两个元素之间的差是0.01;
x=exp(i*t); % 定义x变量,圆的参数方程是x=cost,y=sint,而复数exp(i*t)的实部是cost,虚部是sint,这是圆的复数方程,其中i是虚数单位;
y=[x;2*x;3*x]'; %定义y函数,建立一个三列x行的矩阵
plot(y) % 绘制y函数的曲线
grid on; % 加网格线
box on; % 加坐标边框
运行结果:
图2.6 运行结果
(2)set(gca,'YTickMode','manual','YTick',[-16384,0,16384])命令:
设置y轴的网格线坐标
图2.7 运行结果
(3)set(gca,'XTickMode','manual','XTick',[-21846,-10922,0,10922,21846])):
设置x轴的网格线坐标
图2.8 运行结果
(4)set(gca,'YAxisLocation','right'):
将y轴的刻度设置到右侧
图2.9 运行结果
(5)set(gca, 'XTick',[-2,0,2] ):
设置x轴的记号点:
图2.10 运行结果
2.5 设计函数y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx),以不同标度在同一坐标内绘制曲线,验证函数plotyy。
x=0:pi/100:2*pi;
y1=0.2*exp(-0.5*x).*cos(4*pi*x);
y2=2*exp(-0.5*x).*cos(pi*x);
plotyy(x,y1,x,y2);
答:plotyy(x1,y1,x2,y2);将(x1,y1)绘制在左侧纵坐标轴中,将(x2,y2)图以右侧的纵坐标为纵轴。
加上图例,legend('y1=0.2*exp(-0.5*x).*cos(4*pi*x)','y2=2*exp(-0.5*x).*cos(pi*x)')
运行结果如图: