Python科学计算和数据处置市公开课一等奖百校联赛获奖课件.pptx
《Python科学计算和数据处置市公开课一等奖百校联赛获奖课件.pptx》由会员分享,可在线阅读,更多相关《Python科学计算和数据处置市公开课一等奖百校联赛获奖课件.pptx(82页珍藏版)》请在咨信网上搜索。
1、1Matplotlib绘制精美图表第1页目录o快速绘图n快速绘图n绘制多轴图n坐标轴设定o绘图函数介绍n对数坐标图n极坐标图n柱状图n散列图 2第2页目录n图像n等值线图n三维绘图3第3页4 matplotlib 是python最著名绘图库,它提供了一整套和matlab相同命令API,十分适合交互式地进行制图。而且也能够方便地将它作为绘图控件,嵌入GUI应用程序中。它文档相当完备,而且Gallery页面中有上百幅缩略图,打开之后都有源程序。所以假如你需要绘制某种类型图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。展示页面地址:http:/ matplotlibpyplot子库提供了
2、和matlab类似绘图API,方便用户快速绘制2D图表。(matplotlib_simple_plot.py)pylab模块 matplotlib还提供了名为pylab模块,其中包含了许多numpy和pyplot中惯用函数,方便用户快速进行计算和绘图,能够用于IPython中快速交互式使用。5第5页快速绘图 matplotlib中快速绘图函数库能够经过以下语句载入:接下来调用figure创建一个绘图对象,而且使它成为当前绘图对象。经过figsize参数能够指定绘图对象宽度和高度,单位为英寸;dpi参数指定绘图对象分辨率,即每英寸多少个像素,缺省值为80。所以本例中所创建图表窗口宽度为8*80=
3、640像素。6import matplotlib.pyplot as plt plt.figure(figsize=(8,4)第6页快速绘图 也能够不创建绘图对象直接调用接下来plot函数直接绘图,matplotlib会自动创建一个绘图对象。假如需要同时绘制多幅图表话,能够是给figure传递一个整数参数指定图标序号,假如所指定序号绘图对象已经存在话,将不创建新对象,而只是让它成为当前绘图对象。下面两行程序经过调用plot函数在当前绘图对象中进行绘图:7plt.plot(x,y,label=$sin(x)$,color=red,linewidth=2)plt.plot(x,z,b-,label
4、=$cos(x2)$)第7页快速绘图 plot函数调用方式很灵活,第一句将x,y数组传递给plot之后,用关键字参数指定各种属性:n label:给所绘制曲线一个名字,此名字在图示(legend)中显示。只要在字符串前后添加$符 号,matplotlib就会使用其内嵌latex引擎绘制数学公式。n color:指定曲线颜色n linewidth:指定曲线宽度n第三个参数b-指定曲线颜色和线型8plt.plot(x,y,label=$sin(x)$,color=red,linewidth=2)plt.plot(x,z,b-,label=$cos(x2)$“)第8页快速绘图 接下来经过一系列函数设
5、置绘图对象各个属性:n xlabel/ylabel:设置X轴/Y轴文字n title:设置图表标题n ylim:设置Y轴范围n legend:显示图示 最终调用plt.show()显示出创建全部绘图对象。9plt.xlabel(Time(s)plt.ylabel(Volt)plt.title(PyPlot First Example)plt.ylim(-1.2,1.2)plt.legend()第9页快速绘图o 10import numpy as npimport matplotlib.pyplot as plt x=np.linspace(0,10,1000)y=np.sin(x)z=np.c
6、os(x*2)plt.figure(figsize=(8,4)plt.plot(x,y,label=$sin(x)$,color=red,linewidth=2)plt.plot(x,z,b-,label=$cos(x2)$)plt.xlabel(Time(s)plt.ylabel(Volt)plt.title(PyPlot First Example)plt.ylim(-1.2,1.2)plt.legend()plt.show()第10页快速绘图11第11页快速绘图 还能够调用plt.savefig()将当前Figure对象保留成图像文件,图像格式由图像文件扩展名决定。下面程序将当前图表保留
7、为“test.png”,而且经过dpi参数指定图像分辨率为 120,所以输出图像宽度为“8X120=960”个像素。实际上不需要调用show()显示图表,能够直接用savefig()将图表保留成图像文件.使用这种方法能够很轻易编写出 批量输出图表程序.12run matplotlib_simple_plot.pyplt.savefig(test.png,dpi=120)第12页快速绘图o绘制多轴图 一个绘图对象(figure)能够包含多个轴(axis),在Matplotlib中用轴表示一个绘图区域,能够将其了解为子图。上面第一个例子中,绘图对象只包含一个轴,所以只显示了一个轴(子图(Axes)
8、。能够使用subplot函数快速绘制有多个轴图表。subplot函数调用形式以下:13subplot(numRows,numCols,plotNum)第13页快速绘图14 subplot将整个绘图区域等分为numRows行和 numCols列个子区域,然后按照从左到右,从上到下次序对每个子区域进行编号,左上子区域编号为1。假如numRows,numCols和plotNum这三个数都小于10话,能够把它们缩写为一个整数,比如subplot(323)和subplot(3,2,3)是相同。subplot在plotNum指定区域中创建一个轴对象。假如新创建轴和之前创建轴重合话,之前轴将被删除。第14页
9、快速绘图 下面程序创建3行2列共6个轴,经过axisbg参数给每个轴设置不一样背景颜色。假如希望某个轴占据整个行或者列话,能够以下调用subplot:15for idx,color in enumerate(rgbyck):plt.subplot(320+idx+1,axisbg=color)plt.show()plt.subplot(221)#第一行左图plt.subplot(222)#第一行右图plt.subplot(212)#第二整行plt.show()第15页快速绘图 当绘图对象中有多个轴时候,能够经过工具栏中Configure Subplots按钮,交互式地调整轴之间间距和轴与边框之
10、间距离。假如希望在程序中调整话,能够调用subplots_adjust函数,它有left,right,bottom,top,wspace,hspace等几个关键字参数,这些参数值都是0到1之间小数,它们是以绘图区域宽高为1进行正规化之后坐标或者长度。16第16页快速绘图 subplot()返回它所创建Axes对象,能够将它用变量保留起来,然后用sca()交替让它们成为当前Axes对象,并调用plot()在其中绘图。假如需要同时绘制多幅图表,能够给figure()传递一个整数参数指定Figure对象序号,假如序号所指定figure对象已经存在,将不创建新对象,而只是让它成为当前Figure对象。
11、下面程序演示了怎样依次在不一样图表不一样 子图中绘制曲线。(matplotlib_multi_figure.py)17第17页快速绘图 首先经过figure()创建了两个图表,它们序号分别为1和2。然后在图表2中创建了上下 并排两个子图,并用变量ax1和ax2保留。18import numpy as npimport matplotlib.pyplot as pltplt.figure(1)#创建图表1plt.figure(2)#创建图表2ax1=plt.subplot(211)#在图表2中创建子图1ax2=plt.subplot(212)#在图表2中创建子图2x=np.linspace(0,
12、3,100)第18页快速绘图 在循环中,先调用figure(1)让图表1成为当前图表,并在其中绘图。然后调用sca(ax1)和sca(ax2)分别让子图ax1和ax2成为当前子图,并在其中绘图。当它们成为当前子图时,包含它们图表2也自动成为当前图表,所以不需要调用figure(2)依次在图表1和图表2两 个子图之间切换,逐步在其中添加新曲线 19for i in xrange(5):plt.figure(1)#选择图表1plt.plot(x,np.exp(i*x/3)plt.sca(ax1)#选择图表2子图1plt.plot(x,np.sin(i*x)plt.sca(ax2)#选择图表2子图2
13、plt.plot(x,np.cos(i*x)plt.show()第19页快速绘图20 第20页快速绘图o坐标轴设定 Axis容器包含坐标轴刻度线、刻度标签、坐标网格以及坐标轴标题等内容。刻度包含主刻度和副刻度,分别经过get_major_ticks()和get_minor_ticks()方法取得。每个刻度线都是一 个XTick或YTick对象,它包含实际刻度线和刻度标签。为了方便访问刻度线和文本,Axis 对象提供了 get_ticklabels()和get_ticklines()方法,能够直接取得刻度标签和刻度线。下面例子进行绘图并得到当前子图X轴对象axis:21 plt.plot(1,2
14、,3,4,5,6)plt.show()axis=plt.gca().xaxis第21页快速绘图 取得axis对象刻度位置列表:下面取得axis对象刻度标签以及标签中文字:22 axis.get_ticklocs()array(1.,1.5,2.,2.5,3.)axis.get_ticklabels()#取得刻度标签列表 x.get_text()for x in axis.get_ticklabels()#取得刻度文本字符串u1.0,u1.5,u2.0,u2.5,u3.0 第22页快速绘图23第23页快速绘图 下面取得X轴上表示主刻度线列表,可看到X轴上共有10条刻度线 因为没有副刻度线,所以副
15、刻度线列表长度为0:使用pyplot模块中xticks()能够完成X轴上刻度标签配置:24 axis.get_ticklines()axis.get_ticklines(minor=True)#取得副刻度线列表plt.xticks(fontsize=16,color=red,rotation=45)第24页快速绘图25 上面例子中副刻度线列表为空,这是因为用于计算副刻度位置对象默认为 NullLocator,它不产生任何刻度线。而计算主刻度位置对象为AutoLocator,它会依据当前缩放等配置自动计算刻度位置.matplotlib提供了各种配置刻度线位置Locator类,以及控制刻度标签显示
16、Formatter 类。下面程序设置X轴主刻度为/4,副刻度为/20,而且主刻度上标签用数学符号显示。(matplotlib_axis_text.py自定义坐标轴刻度和文字)第25页快速绘图26 与刻度定位和文本格式化相关类都在matplotlib.ticker模块中定义,程序从中载入了两个类:MultipleLocaton,FuncFormatter.from matplotlib.ticker import MultipleLocator,FuncFormatterimport matplotlib.pyplot as plfrom matplotlib.ticker import Mul
17、tipleLocator,FuncFormatter import numpy as npx=np.arange(0,4*np.pi,0.01)y=np.sin(x)pl.figure(figsize=(8,4)pl.plot(x,y)ax=pl.gca()第26页快速绘图 程序中经过pi_formatter()计算出刻度值对应刻度文本.(很繁琐)27def pi_formatter(x,pos):m=np.round(x/(np.pi/4)n=4while m!=0 and m%2=0:m,n=m/2,n/2if m=0:return 0if m=1 and n=1:return$pi$if
18、 n=1:return r$%d pi$%mif m=1:return r$fracpi%d$%nreturn r$frac%d pi%d$%(m,n)第27页快速绘图o 28X=np.linspace(0,4*np.pi,17,endpoint=True)Xarray(0.,0.78539816,1.57079633,2.35619449,3.14159265,3.92699082,4.71238898,5.49778714,6.28318531,7.06858347,7.85398163,8.6393798,9.42477796,10.21017612,10.99557429,11.780
19、97245,12.56637061)plt.xticks(0.,0.78539816,1.57079633,2.35619449,3.14159265,3.92699082,4.71238898,5.49778714,6.28318531,7.06858347,7.85398163,8.6393798,9.42477796,10.21017612,10.99557429,11.78097245,12.56637061,r$0$,r$pi/4$,r$pi/2$,r$3pi/4$,r$pi$,r$5pi/4$,r$3pi/2$,r$7pi/4$,r$2pi$,r$9pi/4$,r$5pi/2$,r
20、$11pi/4$,r$3pi$,r$13pi/4$,r$7pi/2$,r$15pi/4$,r$4pi$)#r$frac2pi3$,第28页快速绘图 以指定值整数倍为刻度放置主、副刻度线。使用指定函数计算刻度文本,它会将刻度值和刻度序号作为参数传递给计算刻度文本函数.29ax.xaxis.set_major_locator(MultipleLocator(np.pi/4)ax.xaxis.set_minor_locator(MultipleLocator(np.pi/20)ax.xaxis.set_major_formatter(FuncFormatter(pi_formatter)#设置两个坐
21、标轴范围pl.ylim(-1.5,1.5)pl.xlim(0,np.max(x)第29页快速绘图 30pl.subplots_adjust(bottom=0.15)#设置图底边距pl.grid()#开启网格#主刻度为pi/4ax.xaxis.set_major_locator(MultipleLocator(np.pi/4)#主刻度文本用pi_formatter函数计算ax.xaxis.set_major_formatter(FuncFormatter(pi_formatter)#副刻度为pi/20ax.xaxis.set_minor_locator(MultipleLocator(np.pi
22、/20)#设置刻度文本大小for tick in ax.xaxis.get_major_ticks():tick.label1.set_fontsize(16)pl.show()第30页快速绘图 31第31页绘图函数介绍32o对数坐标图 前面介绍过怎样使用plot()绘制曲线图,所绘制图表X-Y轴坐标都是算术坐标。下面看看怎样在对数坐标系中绘图。绘制对数坐标图函数有三个:semilogx()、semilogy()和loglog(),它们分别绘制X轴为对数坐标、Y轴为对数坐标以及两个轴都为对数坐标时图表。第32页绘图函数介绍 下面程序使用4种不一样坐标系绘制低通滤波器频率响应曲线。其中,左上图为
23、plot()绘制算术坐标系,右上图为semilogx()绘制X轴对数坐标系,左下列图 为semilogy()绘制Y轴对数坐标系,右下列图为loglog()绘制双对数坐标系。使用双对数坐标系表示频率响应曲线通常被称为波特图。(matplotlib_log.py)33import numpy as npimport matplotlib.pyplot as pltw=np.linspace(0.1,1000,1000)p=np.abs(1/(1+0.1j*w)#计算低通滤波器频率响应第33页绘图函数介绍34plt.subplot(221)plt.plot(w,p,linewidth=2)plt.y
24、lim(0,1.5)plt.subplot(222)plt.semilogx(w,p,linewidth=2)plt.ylim(0,1.5)plt.subplot(223)plt.semilogy(w,p,linewidth=2)plt.ylim(0,1.5)plt.subplot(224)plt.loglog(w,p,linewidth=2)plt.ylim(0,1.5)plt.show()第34页绘图函数介绍 35第35页绘图函数介绍o极坐标图 极坐标系是和笛卡尔(X-Y)坐标系完全不一样坐标系,极坐标系中点由一个夹角和一段相对中心点距离来表示。下面程序绘制极坐标图,(matplotlib
25、_polar.py)。36import numpy as npimport matplotlib.pyplot as plttheta=np.arange(0,2*np.pi,0.02)第36页绘图函数介绍o 程序中调用subplot()创建子图时经过设 polar参数为True,创建一个极坐标子图。然后调用plot()在极坐标子图中绘图。也能够使用polar()直接创建极坐标子图并在其中绘制曲线。37plt.subplot(121,polar=True)plt.plot(theta,1.6*np.ones_like(theta),linewidth=2)plt.plot(3*theta,th
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 科学 计算 数据 处置 公开 一等奖 联赛 获奖 课件
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。