Python数据分析与应用 课件 第9章 matplotlib_第1页
Python数据分析与应用 课件 第9章 matplotlib_第2页
Python数据分析与应用 课件 第9章 matplotlib_第3页
Python数据分析与应用 课件 第9章 matplotlib_第4页
Python数据分析与应用 课件 第9章 matplotlib_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

第9章

Matplotlib

《Python数据分析与应用》MatplotlibMatplotlib发布于2007年,在其函数设计时参考MATLAB相关函数,故命名以“Mat”开头,“Plot”表示绘图,“Lib”为集合。Matplotlib可以绘制线图、直方图、饼图、散点图以及误差线图等各种图形,主要用于将NumPy统计计算结果可视化。Matplotlib官方网址为:/Matplotlib绘图步骤Matplotlib画图流程大致分为如下步骤:步骤1:figure函数创建画布,决定是否创建子图。步骤2:使用plot函数绘制图形。步骤3:设置绘图对象的各种属性。importmatplotlib.pyplotaspltfig=plt.figure()ax=fig.add_subplot(111)ax.set(xlim=[0.5,4.5],ylim=[-2,8],title='AnExample Axes‘,ylabel='Y-Axis',xlabel='X-Axis')plt.show()

绘图函数Matplotlib中绘图函数为plot,使用语法如下:plt.plot(x,y,color,marker,linestyle,**kwargs)参数接收值说明默认值x,yarray表示

x轴与

y轴对应的数据;无colorstring表示折线的颜色;Nonemarkerstring表示折线上数据点处的类型;Nonelinestylestring表示折线的类型;-linewidth数值线条粗细:linewidth=1.=5.=0.31alpha

0~1之间的小数表示点的透明度;Nonelabelstring数据图例内容:label=‘实际数据’None子图Matplotlib提供如下三种方式绘制子图:(1)通过plt的subplot;(2)通过figure的add_subplot;(3)通过plt的subplots。子图subplot(233)表示在当前画布的右上角创建一个两行三列的绘图区域,选择在第3个位置绘制子图二维图函数名称描述函数名称描述Bar绘制条形图Polar绘制极坐标图Barh绘制水平条形图Scatter绘制x与y的散点图Boxplot绘制箱型图Stackplot绘制堆叠图Hist绘制直方图Stem绘制二维离散数据(“火柴图”)his2d绘制2D直方图Step绘制阶梯图Pie绘制饼状图Quiver绘制一个二维按箭头线性图使用plot函数实现画线。plot函数的第一个数组是横轴的值,第二个数组是纵轴的值,最后一个参数表示线的颜色。importmatplotlib.pyplotaspltplt.plot([1,2,3],[3,6,9],'-r')plt.plot([1,2,3],[2,4,9],':g')plt.show()

散点图

scatter函数用来绘制散点图。scatter函数也需要两组配对的数据指定x和y轴的坐标。importmatplotlib.pyplotaspltimportnumpyasnp

N=20

plt.scatter(np.random.rand(N)*100,np.random.rand(N)*100,c='r',s=100,alpha=0.5)plt.scatter(np.random.rand(N)*100,np.random.rand(N)*100,c='g',s=200,alpha=0.5)plt.scatter(np.random.rand(N)*100,np.random.rand(N)*100,c='b',s=300,alpha=0.5)

plt.show()饼状图pie函数用来绘制饼状图,用来表达集合中各个部分的百分比。importnumpyasnplabels=['Mon','Tue','Wed','Thu','Fri','Sat','Sun']data=np.random.rand(7)*100plt.pie(data,labels=labels,autopct='%1.1f%%')plt.axis('equal')plt.legend()plt.show()条形图bar函数用来绘制条形图,用来描述一组数据的对比情况,例如:一周七天,每天的城市车流量。直方图直方图用hist函数用来绘制,看起来与条形图有些类似。但它们的含义是不一样,直方图描述了某个范围内数据出现的频度。箱线图importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltnp.random.seed(2)df=pd.DataFrame(np.random.rand(5,4),columns=['A','B','C','D'])#生成0~1的5*4维度数据并存入4列DataFrame中

df.boxplot()plt.show()#显示图像三维图三维图创建主要有如下两种方式:(1)利用关键字projection='3d’来实现(2)通过从mpl_toolkits.mplot3d导入对象Axes3D来实现三维曲线图frommpl_toolkitsimportmplot3dimportmatplotlib.pyplotaspltimportnumpyasnp

ax=plt.axes(projection='3d')

#三维线的数据zline=np.linspace(0,15,1000)xline=np.sin(zline)yline=np.cos(zline)ax.plot3D(xline,yline,zline,'gray')三维散点图importmatplotlib.pyplotaspltimportnumpyasnp

ax=plt.axes(projection='3d')

zdata=15*np.random.random(100)xdata=np.sin(zdata)+0.1*np.random.randn(100)ydata=np.cos(zdata)+0.1*np.random.randn(100)ax.scatter3D(xdata,ydata,zdata,c=zdata,cmap='Reds')三维等高线图frommpl_toolkitsimportmplot3dimportmatplotlib.pyplotaspltimportnumpyasnp

deff(x,y):returnnp.sin(np.sqrt(x**2+y**2))x=np.linspace(-6,6,30)y=np.linspace(-6,6,30)X,Y=np.meshgrid(x,y)Z=f(X,Y)

fig=plt.figure()ax=plt.axes(projection='3d')ax.contour3D(X,Y,Z,50,cmap='binary')ax.set_xlabel('x')ax.set_ylabel('y')ax.set_zlabel('z')#俯仰角设为60度,把方位角调整为35度ax.view_init(60,35)动态图matplotlib画图有阻塞和交互两种显示模式:(1)阻塞模式:采用plt.show显示图片,且图片关闭之前代码将阻塞在该行(2)交互模式:采用plt.plot显示图片,且不阻塞代码的继续运行。Matplotlib中默认是使用阻塞模式。

matplotlib的animation模块实现动态图较为繁琐。而交互式绘图和暂停功能较为简单,通过“画图-->清理-->画图”的循环实现动态效果。相关函数如下所示:plt.ion():打开交互模式plt.ioff():关闭交互模式plt.clf():清除当前的Figure对象plt.cla():清除当前的Axes对象plt.pause():暂停功能概率分布泊松分布正态分布均匀分布二项分布泊松分布importnumpyasnpimportmatplotlib.pyplotaspltlist=np.random.poisson(9,10000)plt.hist(list,bins=8,color='b',alpha=0.4,edgecolor='r')plt.show()正态分布importnumpyasnpimportmatplotlib.pyplotaspltlist=np.random.normal(0,1,10000)plt.hist(list,bins=8,color='r',alpha=0.5,edgecolor='r')plt.show()均匀分布importnumpyasnpimportmatplotlib.pyplotasplt

list=np.random.uniform(0,10,10000)plt.hist(list,bins=7,color='g',alpha=0.4,edgecolor='b')plt.show()二项分布importnumpyasnpimportmatplotlib.pyplotaspltlist=np.random.binomial(n=10,p=0.5,size=10000)plt.hist(list,bins=8,color='g',alpha=0.4,edgecolor='b')plt.show()三维图三维图创建主要有如下两种方式利用关键字projection='3d’来实现通过从mpl_toolkits.mplot3d导入对象Axes3D来实现三维曲线图frommpl_toolkitsimportmplot3dimportmatplotlib.pyplotaspltimportnumpyasnp

ax=plt.axes(projection='3d')

#三维线的数据zline=np.linspace(0,15,1000)xline=np.sin(zline)yline=np.cos(zline)ax.plot3D(xline,yline,zline,'gray')三维散点图importmatplotlib.pyplotaspltimportnumpyasnp

ax=plt.axes(projection='3d')

zdata=15*np.random.random(100)xdata=np.sin(zdata)+0.1*np.random.randn(100)ydata=np.cos(zdata)+0.1*np.random.randn(100)ax.scatter3D(xdata,ydata,zdata,c=zdata,cmap='Reds')三维等高线图import

温馨提示

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

评论

0/150

提交评论