《2023大数据分析工具Matplotlib用法.docx》由会员分享,可在线阅读,更多相关《2023大数据分析工具Matplotlib用法.docx(23页珍藏版)》请在优知文库上搜索。
1、大数据分析工具MatPIotlib用法目录1.1初级绘制3L使用默认配置42 .改变线条的颜色和粗细63 .设置边界64 .设置刻度65 .设置刻度标签76 .移动轴线87 .添加图例88 .注解某些点91.2图像、子区、子图、刻度101 .图像102 .子图113 .坐标轴114 .刻度111.3其他种类的绘图131 .常规绘图132 .散点图143 .条形图154 .等高线图175 .饼图186 .矢量图197 .极轴图208 .三维绘图211.4总结22大数据分析工具MatPlOtlib用法MalPlotlib是PyIhon2D绘图领域使用广泛的套件。它能让使用者很轻松地将数据图形化,并
2、且提供多样化的输出格式。本章将会探索MatPlotIib的常见用法。在MatPIOtlib中使用最多的模块是PyPlot。PyIab是MaIPIouib面向对象绘图库的一个接口。它的语法和Matlab十分相近。也就是说,它主要的绘图命令和MaHab对应的命令有相似的参数。1.1 初级绘制使用MatPIOHib库绘图,原理很简单,就是下面这5步: 创建一个图纸(figure)o 在图纸上创建一个或多个绘图(PlOlting)区域(也叫子图、坐标系/轴)。 在PIotting区域上描绘点、线等各种marker。 为plotting添加修饰标签(绘图线上的或坐标轴上的)。 其他各种DIY。在上面的过
3、程中,主要涉及下面3个元素: 变量。 函数。 图纸(figure)和子图(axes,也可以理解成坐标轴)。其中,变量和函数通过改变figure和axes中的元素(例如标题、标签、点和线等)一起描述figure和axes,也就是在画布上绘图。图片结构如图5.1所示。图5.1MaIPlOuib库绘图图片结构这一节将从简到繁:先尝试用默认配置在同一张图上绘制正弦和余弦函数图像,然后逐步美化它。下面取得正弦函数和余弦函数的值:frompylabimport*X=n.Iinspace(-n.i,np.i,256,endPoint=TrUe)C,S=np.cos(X)tnp.sin(X)X现在是一个NUm
4、Py数组,包含从-到+(包含)等差分布的256个值。C是正弦值(256个值),S是余弦值(256个值)。可以在IPython的交互模式下测试代码,也可以执行Python文件。pythonexercise_l.py1.使用默认配置MatPIoHib的默认配置都允许用户自定义。可以调整大多数的默认配置:图片大小和分辨率(dpi)、线宽、颜色、风格、坐标轴以及网格的属性、文字与字体属性等。不过,MatPIOHib的默认配置在大多数情况下已经做得足够好,只在很少的情况下才会更改这些默认配置。frompylabimport*X=np.Iinspace(-np.pi,np.piz256,endpoint=
5、True)C,S=np.cos(X)znp.sin(X)plot(X,C)plot(X,S)show()MatPIOuib使用默认配置的正余弦图如图5.2所示。1.0下面的代码中展现了MatPIoHib的默认配置并辅以注释说明,这部分配置包含有关绘图样式的所有配置。代码中的配置与默认配置完全相同,可以在交互模式中修改其中的值来观察效果。# 导入MatPIQtlib的所有内容(NymPy可以用np这个名字)frompylabimport*# 创建一个8*6点(point)的图,并设置分辨率为80figure(figsize=(8,6)rdi=80)# 创建一个新的1*1的子图,接下来的图样绘制在
6、其中的第1块(也是唯一的一块)subplot(lz1,1)X=np.Iinspace(-np.pi,np.pi,256zendpoint=True)C,S=np.cos(X),np.sin(X)# 绘制余弦曲线,使用蓝色的、连续的、宽度为1(像素)的线条plot(X,C,color=blue,zIinewidth=I.0,linestyle=-)# 绘制正弦曲线,使用绿色的、连续的、宽度为1(像素)的线条plot(X,Szcolor=,green,Iinewidth=I.0,Iinestyle=-)# 设置横轴的上下限Xlim(-4.0,4.0)# 设置横轴记号xticks(np.Iinspa
7、ce(-4,4,9,endpoint=True)# 设置纵轴的上下限ylim(-1.0z1.0)# 设置纵轴记号yticks(np.Iinspace(-1,1,5,endpoint=True)# 以分辨率72来保存图片# savefig(exercice_2.png,zdpi=72)# 在屏幕上显示show()2 .改变线条的颜色和粗细以蓝色和红色分别表示余弦和正弦函数,而后将线条变粗一点。在水平方向拉伸一下整个图,如图5.3所示。图5.3改变线条的颜色和粗细figure(figsize=(10,6),dpi=80)plot(X,C,color=blue,linewidth=2.5,Iines
8、tyle=-)plot(X,S,color=red,zlinewidth=2.5zlinestyle=*-)3 .设置边界当前的图像边界有点太紧了,而且想要预留一点空间使数据点更清晰。Xlim(X.min()*1.1,X.max()*1.1)ylim(C.min()*1.1,C.max()*1.1)4 .设置刻度当前的刻度并不理想,因为不显示正余弦中我们感兴趣的值(+/-砥+/-兀/2)。我们将进行更改,让其只显示这些值。xticks(-np.piz-np.pi2z0,np.pi2znp.pi)yticks(-1,0,+1)效果如图5.4所示。5 .设置刻度标签刻度已经设置得很合适了,但是其标
9、签并不是很清楚,可以猜出3.142是心但是最好让它更直接。当设置刻度值时,也可以在第二个参数列表中提供相应的标签。注意,用EeX可以获得更好渲染的标签。xticks(-np.pi,-np.pi/2,O,np.pi/2,np.pi,r*$-pi$r*$-pi/2$,r,$0$r$+pi/2$,r$+pi$)yticks(-1,0,+1,r,$-l$,r$0$r,$+l$,)效果如图5.5所示。图5.5设置刻度标签6 .移动轴线轴线(spines)是连接刻度标志和标示数据区域边界的线。它们可以被放置在任意地方,现在是轴的边界。改变这点,让它们位于中间。一共有4个轴线(上/下/左/右)。通过将它们的
10、颜色设置成NOne舍弃位于顶部和右部的轴线。然后把底部和左部的轴线移动到数据空间坐标中的零点。a=gca()ax.spines,right,.set_color(,none,)ax.spines*top,.set_color(,none)ax.xaxis.set_ticks_position(bottom*)ax.spines,bottom*.set_position(,data,f0)ax.yais.set_ticks_position(,Ieft,)ax.spines,left,.set_position(data,O)7 .添加图例下面在图片左上角添加一个图例。这仅仅需要向PIot命令添
11、加关键字参数IabeI(之后将被图例框使用)。plot(X,C,color=blue,linewidth=2.5,linestyle=-u,label=,cosineu)plot(XzS,color=,redzlinewidth=2.5zlinestyle=n-,label=sine)legend(Ioc=,upperleft,)图5.6添加图例8 .注解某些点现在使用annotate命令注解一些我们感兴趣的点。选择23作为想要注解的正弦值和余弦值。我们将在曲线上做一个标记和一个垂直的虚线。然后,使用annotate命令来显示一个箭头和一些文本。t=2*np.pi3plot(t,t/0,np.
12、cos(t),color=,blue,linewidth=2.5,linestyle=)scatter(tz/np.cos(t),50,color=,blue,)annotate(r,$sin(frac2pi3)=fracsqrt32$zxy=(t,np.sin(t),xycoords=data,xytext=(+10,+30),textcoords=,offsetpoints,fontsize=16,arrowprops=dict(arrowstyle=,-,connectionstyle=,arc3,rad=.2m)plot(t,t,0,np.sin(t),color=,red*,line
13、width=2.5,Iinestyle=*-*)scatter(t,np.sin(t),50,color=,red)annotate(r,$cos(frac(2pi)3)=-frac1H2$,xy=(t,np.cos(t),xycoords=,data,xytext=(-90,-50)ftextcoords=*offsetpoints,fontsize=16,arrowprops=dict(arrowstyle=一,connectionstyle=,arc3,rad=.2)图5.7注解某些点1.2图像、子区、子图、刻度到目前为止,我们都用隐式的方法来绘制图像和坐标轴。在快速绘图中,这种方法很方
14、便。我们也可以显式地控制图像(Figures)子图(AXeS)和坐标轴。MatPIoUib中的“图像”指的是用户在界面上看到的整个窗口内容。在图像里面有所谓的“子图子图的位置是由坐标网格确定的,而“坐标轴却不受此限制,可以放在图像的任意位置。我们已经隐式地使用过图像和子图:在调用PlOt函数的时候,MatPIoHib调用gca()函数和gcf()函数来获取当前的坐标轴和图像。如果无法获取图像,就会调用figure。函数来创建一个图像,严格地说,是用SUbPk)t(l,1,1)创建一个只有一个子图的图像。1 .图像所谓图像,就是GUl里以“Figure#为标题的那些窗口。图像编号从1开始,与MaHab的风格一致,而与PythOn从0开始编号的风格不同。表5.1所示的参数是图像的属性。表5.1图像的属性参数参数默认值描述num1图像的数量figsizcfigure,flgsizc图像的长和宽(英寸)dpi11gurc.dpi分辨率(点/英寸)facecolorfigure,facccolor绘图区域的背景颜色edgecolorfigurc.edgccolor绘图区域边缘的颜色frameonTrue是否绘制图像边缘除了图像数量这个参数外,其余的参数都很少修改。在图形界面中可以单击右上角的“X”来关闭窗口,MatPIotIib还提供了名为CIoSe的函数来关闭