第7讲--matplotlib图形

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1pshcong@tongji.edu.cnMatplotlib图形教师丛培盛2TongjiUniversity画图工具官网地址是matplotlibisapython2DplottinglibrarywhichproducespublicationqualityfiguresinavarietyofhardcopyformatsJohnHunter(1968-2012)Anaconda自动带3TongjiUniversityPython环境下实现Matlab制图功能的第三方库需要numpy库的支持支持用户方便设计出二维、三维数据的图形显示提供卡迪尔坐标、极坐标、球坐标和三维坐标制作的图形达到出版级的标准可以在一张绘图纸上绘制多张小图可以在一张图上绘制多条线4TongjiUniversity制图初步将函数转化成关于X,Y,Z坐标点的数组利用np.arange进行采样利用采样点,np.函数计算对应的函数值数据全部以np.array表达5TongjiUniversity数据的快速产生arange函数进行采样arange函数需要三个参数,分别为起始点、终止点、采样间隔。采样间隔默认值为1importnumpyasnpnp.arange(0,1,0.1)array([0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9])np.arange(0,5.6)array([0.,1.,2.,3.,4.,5.])6TongjiUniversity数据的快速产生linspace函数进行采样linspace函数指定开始值、终值和元素个数来创建一维数组可以通过endpoint=True关键字指定是否包括终值,缺省设置是包括终值np.linspace(1,10,10)array([1.,2.,3.,4.,5.,6.,7.,8.,9.,10.])np.linspace(1,10,10,endpoint=False)7TongjiUniversity函数Numpy提供了大量函数,计算速度快x=np.arange(0,np.pi/2,0.1)y=np.sin(x)#把所有点的函数值,一次求得matplotlib可以依据x,y进行制图8TongjiUniversity制图关键引用importmatplotlib.pyplotaspltimportnumpyasnp或使用frompylabimport*区别:制图时,1使用plt对象,如plt.plot2直接plotpylab和matplotlib什么关系?9TongjiUniversity制作函数曲线#step1引用importmatplotlib.pyplotaspltimportnumpyasnp#step2准备数据x=np.arange(-np.pi,np.pi,0.1)y=np.sin(x)#step3制图plt.plot(x,y,'b')#‘b’代表使用蓝色画曲线#step4显示图形plt.show()10TongjiUniversity颜色控制缩写颜色'b'blue'g'green'r'red'c'cyan'm'magenta'y'yellow'k'black'w'white11TongjiUniversity线宽、线型、网格线控制在plot中直接设定plot(x,sin,color='blue',linewidth=2.0,linestyle='-')#设置蓝色、2像素宽划线plot(x,cos,color='red',linewidth=2.0,linestyle='-.')#用虚线画图plt.grid(True)#画网格线12TongjiUniversity坐标轴、图标识使用xlim(x1,x2)设定横轴坐标,ylim(y1,y2)设置纵轴坐标x=np.arange(-5,5,0.1)y=x**2plt.xlim(-5,5)#设定横坐标范围plt.ylim(0,100)#设定纵坐标范围plt.xlabel(x)#横轴标识plt.ylabel(y=x*x)#纵轴标识plt.title(Ploty=x*x)#设定图形的标题plt.plot(x,y)plt.show()13TongjiUniversity设定坐标轴刻度特别指定坐标轴的刻度,制作更能表达深意的图形,xticks(yticks)方法实现了该功能importnumpyasnpfrompylabimport*x=np.linspace(-np.pi,np.pi,100)cos=np.cos(x)xticks(np.linspace(-np.pi,np.pi,5))plot(x,cos,color='red',linewidth=2.0,linestyle='-')show()14TongjiUniversity设置样例legendplot的label参数importnumpyasnpfrompylabimport*x=np.linspace(-np.pi,np.pi,100)sin,cos=np.sin(x),np.cos(x)plot(x,sin,color='blue',linewidth=2.0,linestyle='-',label='sin')plot(x,cos,color='red',linewidth=2.0,linestyle='-',label='cos')legend(loc='upperleft')show()15TongjiUniversity显示汉字默认,汉字会乱码importmatplotlibasmplmpl.rcParams['font.family']='sans-serif'mpl.rcParams['font.sans-serif']=[u'SimHei']16TongjiUniversity饼图importnumpyasnpimportmatplotlib.pyplotaspltdata=np.random.randint(1,11,5)plt.pie(data,explode=[0,0,0.2,0,0])#explode的第三个参数为0.2,意味着对应饼块被拖出饼plt.show()17TongjiUniversity散点图scatter函数制作散点frompylabimport*importnumpyasnpn=100x=np.random.normal(0,1,n)y=np.random.normal(0,1,n)scatter(x,y)show()18TongjiUniversity柱图frompylabimport*mpl.rcParams['font.sans-serif']=['SimHei']#提供汉字支持rect=plt.bar(left=(0,1),height=(1,0.5),width=0.35,align='center')plt.ylabel(u'人数')#显示汉字,前面u前导,代表使用unicodeplt.xlabel(u'性别')plt.xticks((0,1),(u男,u女))plt.legend((rect,),(u图例,))plt.show()19TongjiUniversity柱图+折线importnumpyasnpimportmatplotlib.pyplotaspltimportmatplotlibasmplmpl.rcParams['font.family']='sans-serif'mpl.rcParams['font.sans-serif']=[u'SimHei']data=np.random.randint(1,10,10)x=np.arange(len(data))plt.plot(x,data,color='r')plt.bar(x,data,alpha=.5,color='b',width=0.2)plt.show()20TongjiUniversity子窗口制图用subplot函数subplot函数中有三个整数参数,前两个指定制图的行、列,后面一个参数指定第几个子图。例如subplot(1,2,1)指定图形中有2个子图,它们在处于第一行上。最后一个1通知maplotlib,这是第一个子图21TongjiUniversity子窗口制图importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(0,5,10)y=x**2plt.subplot(1,2,1)plt.plot(x,y,'r--')plt.subplot(1,2,2)plt.plot(y,x,'g*-')plt.show()22TongjiUniversity下面窗口subplot参数如何定?23TongjiUniversity指定图的大小和分辨率•指定图形的分辨率、大小和长宽比例(aspectratio)•通过subplots函数中的figsize、dpi等参数实现•如创建一个800*600像素、100dpi(每英寸100点)分辨率的图形,可以使用如下语句fig,axes=plt.subplots(figsize=(8,6),dpi=100)24TongjiUniversity指定图的大小和分辨率importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(0,5,10)y=x**2fig,axes=plt.subplots(figsize=(8,6),dpi=100)axes.plot(x,y,'r')axes.set_xlabel('x')axes.set_ylabel('y')axes.set_title('title')plt.show()25TongjiUniversity三维图•除了要引用matplotlib外,•还需要引用mpl_toolkits.mplot3d库?•还需要在matplotlib的figure函数生成实例对象后,设置其制图模式为3d典型语句importmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportAxes3Dfig=plt.figure()ax=fig.add_subplot(111

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功