大家好!我是Henry!上一期的Python爬虫实践中,Henry导入了Matplotlib库进行了新冠疫情的每日新增的绘图。其实Matplotlib的原型是另一门应用非常广泛的语言——Matlab。最近Henry也学习了一些Matlab的绘图技巧,分享给大家~
我们先放几张效果图~
y=sinx
看到这里,是不是觉得很酷炫呢!那跟着我一起来学习吧!
1.简单平面函数图像
x=0:0.5:4; % 这里表示,x变量为[0,4],中间每隔0.5写一个坐标值,作为横轴。
y=2*x+1; % 变量y=2x+1,作为纵轴。
plot(x,y) % 调用plot函数,横纵轴变量作为参数,进行绘图。
点击运行(Run),得到图像。
y=2x+1x=0:pi/100:2*pi; %定义变量x为[0,2pi],每隔pi/100标注一个坐标值,作为横轴
y=2*exp(-0.5*x).*cos(4*pi*x); %定义变量y,exp(x)表示自然底数的指数函数e的x次方,.*表示点乘
plot(x,y) %调用plot函数,进行绘图
运行结果为
t=0:pi/50:2*pi; %定义变量t[0,2pi],每隔pi/50标注一个坐标值,作为横轴
r=sin(t).*cos(t); %定义变量r=sint·cost, .*表示点乘(内积)
polarplot(t,r); %这里不能直接调用plot函数,而是专门绘制极坐标图的polarplot函数。
运行结果为
2.绘制子图。
有时候,我们需要在一张纸上,绘制多个图,就需要用到subplot函数,创建多个图像。具体用法为:
subplot(m,n,i)
% 这条语句表示,创建一个m行n列的画布(即可以画m*n个图像),现在进行第i个图像的绘制
在这里额外补充几个图的类型:条形图(bar),阶梯图(stairs),杆图(stem),填充图(fill),我们通过实际的例子来学习,顺便用一下刚学的子图,将这几个图画在同一张画布上。
我们选取的例子为简单的平面函数
x=0:pi/10:2*pi; %定义x变量为[0,2pi],每隔0.1pi标记一个点,作为横轴
y=2*sin(x); %定义变量y=2*sinx
subplot(2,2,1); %创建一个2行2列的画布,现在进行第一张图的绘制
bar(x,y,'g'); %绘制一张以x,y为横纵坐标的条形图,颜色用绿色(green)
title('bar(x,y,''g'')'); %创建第一张图的标题为“bar(x,y,''g'')”
axis([0,7,-2,2]); %控制显示的坐标轴的长度,x为[0,7],y为[-2,2]
subplot(2,2,2); %现在进行第二张图的绘制
stairs(x,y,'b'); %绘制一张以x,y为横纵坐标的阶梯图,颜色用蓝色(blue)
title('stairs(x,y,''b'')'); %创建第二张图的标题为“stairs(x,y,''b'')”
axis([0,7,-2,2]); %控制显示的坐标轴的长度,x为[0,7],y为[-2,2]
subplot(2,2,3); %现在进行第三张图的绘制
stem(x,y,'k'); %绘制一张以x,y为横纵坐标的杆图,颜色用黑色(black)
title('stem(x,y,''k'')'); %创建第三张图的标题为“stem(x,y,''b'')”
axis([0,7,-2,2]); %控制显示的坐标轴的长度,x为[0,7],y为[-2,2]
subplot(2,2,4); %现在进行第四张图的绘制
fill(x,y,'y'); %绘制一张以x,y为横纵坐标的填充图,颜色用黄色(yellow)
title('fill(x,y,''y'')'); %创建第四张图的标题为“fill(x,y,''y'')”
axis([0,7,-2,2]); %控制显示的坐标轴的长度,x为[0,7],y为[-2,2]
运行结果如下:
3.绘制三维图像
往往,我们还需要绘制三维函数图像,我们还是从例子中学习。
t=0:pi/100:20*pi; %定义变量t[0,20pi],每隔pi/100标注一个坐标值
x=sin(t); %定义变量x=sint
y=cos(t); %定义变量y=cost
z=t; %定义变量z=t
plot3(x,y,z); %调用绘图函数plot3,表示绘制三维图像,三个参数分别为x,y,z轴值
title('Line in 3-D Space'); %标题为“Line in 3-D Space”
xlabel('X');
ylabel('Y'); %给x,y,z轴分别加上标签(label),即命名
zlabel('Z');
grid on; %grid on 表示打开网格,会出的图像会出现网格
运行结果为:
t=0:pi/20:2*pi; %定义参数t[0,2pi],每隔pi/100标注一个。
[x,y,z]= cylinder(2+sin(t),30); %将x,y,z定义为花瓶型并绘图(cylinder本身为圆柱,这里将表面调整了)
subplot(2,2,1); %创建一个可以画四个图的子图,这里画其中第一个
mesh(x,y,z); %mesh为绘制网格曲面图的函数
subplot(2,2,2); %画第二个图
[x,y,z]=sphere; %将x,y,z定义为球形并绘图
mesh(x,y,z);
subplot(2,1,2); %画第三个图
[x,y,z]=peaks(30); %将x,y,z定义为多峰型并绘图
mesh(x,y,z);
运行结果如下:
写在最后:希望大家关注我的微信公众号一起学习:今天我秃了吗
欢迎大家关注我的知乎账号一起学习:HenryLau