2023Python大数据分析工具Matplotlib用法04_第1页
2023Python大数据分析工具Matplotlib用法04_第2页
2023Python大数据分析工具Matplotlib用法04_第3页
2023Python大数据分析工具Matplotlib用法04_第4页
2023Python大数据分析工具Matplotlib用法04_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大数据分析工具Matplotlib用法目录TOC\o"1-2"\h\u289751.1初级绘制 3259421.使用默认配置 5159582.改变线条的颜色和粗细 774703.设置边界 7236964.设置刻度 7323505.设置刻度标签 8240706.移动轴线 92627.添加图例 9242048.注解某些点 1033491.2图像、子区、子图、刻度 1171931.图像 1139372.子图 12174033.坐标轴 12277884.刻度 1227351.3其他种类的绘图 14266121.常规绘图 14275312.散点图 1518573.条形图 1657854.等高线图 18325955.饼图 1916146.矢量图 20239587.极轴图 21174148.三维绘图 22309861.4总结 23大数据分析工具Matplotlib用法Matplotlib是Python2D绘图领域使用广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。本章将会探索Matplotlib的常见用法。在Matplotlib中使用最多的模块是Pyplot。Pylab是Matplotlib面向对象绘图库的一个接口。它的语法和Matlab十分相近。也就是说,它主要的绘图命令和Matlab对应的命令有相似的参数。初级绘制使用Matplotlib库绘图,原理很简单,就是下面这5步:创建一个图纸(figure)。在图纸上创建一个或多个绘图(plotting)区域(也叫子图、坐标系/轴)。在plotting区域上描绘点、线等各种marker。为plotting添加修饰标签(绘图线上的或坐标轴上的)。其他各种DIY。在上面的过程中,主要涉及下面3个元素:变量。函数。图纸(figure)和子图(axes,也可以理解成坐标轴)。其中,变量和函数通过改变figure和axes中的元素(例如标题、标签、点和线等)一起描述figure和axes,也就是在画布上绘图。图片结构如图5.1所示。图5.1Matplotlib库绘图图片结构这一节将从简到繁:先尝试用默认配置在同一张图上绘制正弦和余弦函数图像,然后逐步美化它。下面取得正弦函数和余弦函数的值:frompylabimport*frompylabimport*X=np.linspace(-np.pi,np.pi,256,endpoint=True)C,S=np.cos(X),np.sin(X)X现在是一个NumPy数组,包含从-π到+π(包含π)等差分布的256个值。C是正弦值(256个值),S是余弦值(256个值)。可以在IPython的交互模式下测试代码,也可以执行Python文件。 pythonexercise_1.py 使用默认配置Matplotlib的默认配置都允许用户自定义。可以调整大多数的默认配置:图片大小和分辨率(dpi)、线宽、颜色、风格、坐标轴以及网格的属性、文字与字体属性等。不过,Matplotlib的默认配置在大多数情况下已经做得足够好,只在很少的情况下才会更改这些默认配置。frompylabimport*frompylabimport*X=np.linspace(-np.pi,np.pi,256,endpoint=True)C,S=np.cos(X),np.sin(X)plot(X,C)plot(X,S)show()Matplotlib使用默认配置的正余弦图如图5.2所示。下面的代码中展现了Matplotlib的默认配置并辅以注释说明,这部分配置包含有关绘图样式的所有配置。代码中的配置与默认配置完全相同,可以在交互模式中修改其中的值来观察效果。##导入Matplotlib的所有内容(NymPy可以用np这个名字)frompylabimport*#创建一个8*6点(point)的图,并设置分辨率为80figure(figsize=(8,6),dpi=80)#创建一个新的1*1的子图,接下来的图样绘制在其中的第1块(也是唯一的一块)subplot(1,1,1)X=np.linspace(-np.pi,np.pi,256,endpoint=True)C,S=np.cos(X),np.sin(X)#绘制余弦曲线,使用蓝色的、连续的、宽度为1(像素)的线条plot(X,C,color="blue",linewidth=1.0,linestyle="-")#绘制正弦曲线,使用绿色的、连续的、宽度为1(像素)的线条plot(X,S,color="green",linewidth=1.0,linestyle="-")#设置横轴的上下限xlim(-4.0,4.0)#设置横轴记号xticks(np.linspace(-4,4,9,endpoint=True))#设置纵轴的上下限ylim(-1.0,1.0)#设置纵轴记号yticks(np.linspace(-1,1,5,endpoint=True))##以分辨率72来保存图片#savefig("exercice_2.png",dpi=72)#在屏幕上显示show()改变线条的颜色和粗细以蓝色和红色分别表示余弦和正弦函数,而后将线条变粗一点。在水平方向拉伸一下整个图,如图5.3所示。图5.3改变线条的颜色和粗细figure(figsize=(10,6),dpi=80)figure(figsize=(10,6),dpi=80)plot(X,C,color="blue",linewidth=2.5,linestyle="-")plot(X,S,color="red",linewidth=2.5,linestyle="-")设置边界当前的图像边界有点太紧了,而且想要预留一点空间使数据点更清晰。xlim(X.min()*1.1,xlim(X.min()*1.1,X.max()*1.1)ylim(C.min()*1.1,C.max()*1.1)设置刻度当前的刻度并不理想,因为不显示正余弦中我们感兴趣的值(+/-π,+/-π/2)。我们将进行更改,让其只显示这些值。xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi])yticks([-1,0,+1])xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi])yticks([-1,0,+1])效果如图5.4所示。图5.4设置刻度设置刻度标签刻度已经设置得很合适了,但是其标签并不是很清楚,可以猜出3.142是π,但是最好让它更直接。当设置刻度值时,也可以在第二个参数列表中提供相应的标签。注意,用latex可以获得更好渲染的标签。效果如图5.5所示。图5.5设置刻度标签移动轴线轴线(spines)是连接刻度标志和标示数据区域边界的线。它们可以被放置在任意地方,现在是轴的边界。改变这点,让它们位于中间。一共有4个轴线(上/下/左/右)。通过将它们的颜色设置成None舍弃位于顶部和右部的轴线。然后把底部和左部的轴线移动到数据空间坐标中的零点。ax=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',0))ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data',0))ax=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',0))ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data',0))添加图例下面在图片左上角添加一个图例。这仅仅需要向plot命令添加关键字参数label(之后将被图例框使用)。plot(X,C,color="blue",linewidth=2.5,linestyle="-",label="cosine")plot(X,S,color="red",linewidth=2.5,linestyle="-",label="sine")plot(X,C,color="blue",linewidth=2.5,linestyle="-",label="cosine")plot(X,S,color="red",linewidth=2.5,linestyle="-",label="sine")legend(loc='upperleft')效果如图5.6所示。图5.6添加图例注解某些点现在使用annotate命令注解一些我们感兴趣的点。选择2π/3作为想要注解的正弦值和余弦值。我们将在曲线上做一个标记和一个垂直的虚线。然后,使用annotate一个箭头和一些文本。效果如图5.7所示。图5.7注解某些点图像、子区、子图、刻度到目前为止,我们都用隐式的方法来绘制图像和坐标轴。在快速绘图中,这种方法很方便。我们也可以显式地控制图像(Figures)、子图(Axes)和坐标轴。Matplotlib中的“图像”指的是用户在界面上看到的整个窗口内容。在图像里面有所谓的“子图”。子图的位置是由坐标网格确定的,而“坐标轴”却不受此限制,可以放在图像的任意位置。我们已经隐式地使用过图像和子图:在调用plot函数的时候,Matplotlib调用gca()函数和gcf()函数来获取当前的坐标轴和图像。如果无法获取图像,就会调用figure()函数来创建一个图像,严格地说,是用subplot(1,1,1)创建一个只有一个子图的图像。图像所谓图像,就是GUI里以“Figure #”为标题的那些窗口。图像编号从1开始,与Matlab的风格一致,而与Python从0开始编号的风格不同。表5.1所示的参数是图像的属性。表5.1图像的属性参数除了图像数量这个参数外,其余的参数都很少修改。“×”来关闭窗口,Matplotlib还提供了名为close的函数来关闭这个窗口。和其他对象一样,你可以使用setp或者set_something来设置图像的属性。子图用户可以用子图来将图样(Plot)放在均匀的坐标网格中,如图5.8所示。用subplot函数的时候需要指明网格的行列数量,以及希望将图样放在哪个网格区域中。此外,gridspec函数的功能更强大,也可以选择它来实现这个功能。图5.8子图样式坐标轴坐标轴和子图的功能类似,不过它可以放在图像的任意位置,样例图如图5.9所示。因此,如果希望在一幅图中绘制一个小图,就可以用这个功能。刻度良好的刻度是图像的重要组成部分。Matplotlib的刻度系统里的各个细节都可以由用户个性化配置。可以用TickLocators来指定在哪些位置放置刻度,用TickFormatters来调整刻度的样式。主要和次要的刻度可以以不同的方式呈现。默认情况下,每一个次要的刻度都是隐藏的,也就是说,次要刻度列表是空的(NullLocator)。坐标轴样例图如图5.9所示。图5.9坐标轴样例图表5.2所示为不同需求设计的一些Locators。这些Locators都是matplotlib.ticker.Locator的子类,用户可以据此定义自己的Locator。以日期为刻度特别复杂,因此Matplotlib提供了matplotlib.dates来实现这一功能。表5.2刻度Locators这些定位器源于Matplotlib的基类matplotlib.ticker.Locator。用户可以源于它创建自己的定位器。处理时间刻度可能非常棘手,因此,Matplotlib在matplotlib.dates中提供了特殊的定位器。其他种类的绘图常规绘图下面尝试生成图5.10所示的图形。图5.10普通图提示:需要使用fill_between命令。散点图下面尝试生成图5.11所示的图形,注意标记大小、颜色和透明度。图5.11散点图提示:色彩由(X,Y)角度给出。条形图下面尝试生成图5.12所示的图形。图5.12条形图提示:要注意文本对齐。等高线图下面尝试生成图5.13所示的图形。图5.13等高线图饼图下面尝试生成图5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论