数据可视化三:Matlab数据可视化(二)
目录:
1、三维曲线绘制:
2、统计图绘制:
3、动画绘制:
1、三维曲线绘制:
1.1 设计函数y=sin(t), x=cos(t), z=(t+1).^t.*sin(t).*cos(t),并使用plot3函数绘制这三个函数的曲线。
t=0:pi/100:10*pi;
y=sin(t);
x=cos(t);
z=(t+1).^t.*sin(t).*cos(t);
plot3(x,y,z);
title('Line in 3-D Space+++WEIMAN');
xlabel('X');ylabel('Y');zlabel('Z');
grid on;
思考:plot3函数的用法?
答:plot3可以画出三维空间中的曲线。plot3(x1,y1,z1) 其中x1,y1,z1为相同维数的向量,分别存储各个点坐标。
程序分析:
t=0:pi/100:10*pi; % 定义t列向量,这个向量的第一个元素是0,最后一个元素是10π,而每两个元素之间的差是π/100;
y=sin(t); % 定义y函数
x=cos(t); % 定义x函数
z=(t+1).^t.*sin(t).*cos(t); % 定义z函数
plot3(x,y,z); % 绘制三维曲线
title('Line in 3-D Space+++WEIMAN'); % 定义图形标题
xlabel('X');ylabel('Y');zlabel('Z'); % X轴注解,Y轴注解,Z轴注解
grid on; % 绘制网格线
legend( 'z=(t+1).^t.*sin(t).*cos(t)'); % 添加标签
运行结果:
图1.1 运行结果
1.2 设计函数z=sin(x+sin(y))-x/10;,分别绘制带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。并使用函数surf绘制该函数图像
[x,y]=meshgrid(-7:0.5:7);
z=sin(sqrt(x.^4+y.^4))./sqrt(x.^4+y.^4+eps);
subplot(2,2,1);
mesh(x,y,z);
title('mesh(x,y,z)+++weiman1')
subplot(2,2,2);
meshc(x,y,z);
title('meshc(x,y,z) +++weiman2')
subplot(2,2,3);
meshz(x,y,z)
title('meshz(x,y,z) +++weiman3')
subplot(2,2,4);
surf(x,y,z);
title('surf(x,y,z)');
思考:meshc,meshz,surf函数的用法?
答:(1)meshgrid:将xoy平面用定义的x、y向量网格化,之后对其中的每一个得到的点求其对应的函数值,最后用mesh将函数图像做出来。
(2)mesh:用于绘制立体网状图
(3)meshz:为曲面加上围裙
(4)meshc:同时画出网状图与等高线
(5)surf:绘制立体曲面图
(6)程序分析:
close all % 关闭所有的图形视窗;
[x,y]=meshgrid(-7:0.5:7); % 将x,y向量网格化,从-7到7的正方形区间内,各点间隔0.5,即x轴有29个点,y轴有29个点,所以,绘制的三维图像网格中,共有29*29=841个点;
z=sin(sqrt(x.^4+y.^4))./sqrt(x.^4+y.^4+eps); % 定义z函数;
subplot(2,2,1); % 同时画出2*2=4个小图形于一个视窗之中,这是定义的第一个区域;
mesh(x,y,z); % 在第一个区域画出x,y,z函数的图像;
title('mesh(x,y,z)+++weiman1') %给第一个区域的图形定义标题;
subplot(2,2,2); % 定义的第二个区域;
meshc(x,y,z); % 在第二个区域画出x,y,z函数的图像并同时画出等高线;
title('meshc(x,y,z) +++weiman2') % 给第二个区域的图形定义标题;
subplot(2,2,3); % 定义的第三个区域;
meshz(x,y,z) % 在第三个区域画出x,y,z函数的图像并带底座(围裙);
title('meshz(x,y,z) +++weiman3') % 给第三个区域的图形定义标题;
subplot(2,2,4); % 定义的第四个区域;
surf(x,y,z); % 在第四个区域绘制x,y,z函数的立体曲面图;
title('surf(x,y,z)'); % 给第四个区域的图形定义标题;
运行结果:
图1.2 运行结果