Python的绘图库matplotlib快速入门课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python的绘图库matplotlib快速入门课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 绘图 matplotlib 快速 入门 课件
- 资源描述:
-
1、1ppt课件Matplotlib绘制精美的图表2ppt课件 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。 它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。 展示页面的地址: http:/ matplotlib的pyplot子库提供了和matlab类似的绘图API,方便用户快速绘制2D图表。(matplotlib_simple_plot.py)
2、pylab模块 matplotlib还提供了名为pylab的模块,其中包括了许多numpy和pyplot中常用的函数,方便用户快速进行计算和绘图,可以用于IPython中的快速交互式使用。 4ppt课件 matplotlib中的快速绘图的函数库可以通过如下语句载入: 接下来调用figure创建一个绘图对象,并且使它成为当前的绘图对象。 通过figsize参数可以指定绘图对象的宽度和高度,单位为英寸;dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80。因此本例中所创建的图表窗口的宽度为8*80 = 640像素。import matplotlib.pyplot as plt plt.
3、figure(figsize=(8,4)5ppt课件 也可以不创建绘图对象直接调用接下来的plot函数直接绘图,matplotlib会自动创建一个绘图对象。 如果需要同时绘制多幅图表的话,可以是给figure传递一个整数参数指定图标的序号,如果所指定序号的绘图对象已经存在的话,将不创建新的对象,而只是让它成为当前绘图对象。 下面的两行程序通过调用plot函数在当前的绘图对象中进行绘图:plt.plot(x,y,label=$sin(x)$,color=red,linewidth=2)plt.plot(x,z,b-,label=$cos(x2)$)6ppt课件 plot函数的调用方式很灵活,第一
4、句将x,y数组传递给plot之后,用关键字参数指定各种属性: label : 给所绘制的曲线一个名字,此名字在图示(legend)中显示。只要在字符串前后添加$符 号,matplotlib就会使用其内嵌的latex引擎绘制的数学公式。 color : 指定曲线的颜色 linewidth : 指定曲线的宽度第三个参数b-指定曲线的颜色和线型plt.plot(x,y,label=$sin(x)$,color=red,linewidth=2)plt.plot(x,z,b-,label=$cos(x2)$“)7ppt课件 接下来通过一系列函数设置绘图对象的各个属性: xlabel / ylabel :
5、 设置X轴/Y轴的文字 title : 设置图表的标题 ylim : 设置Y轴的范围 legend : 显示图示 最后调用plt.show()显示出创建的所有绘图对象。plt.xlabel(Time(s)plt.ylabel(Volt)plt.title(PyPlot First Example)plt.ylim(-1.2,1.2)plt.legend()8ppt课件 import numpy as npimport matplotlib.pyplot as plt x = np.linspace(0, 10, 1000)y = np.sin(x)z = np.cos(x*2) plt.fig
6、ure(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()9ppt课件10ppt课件 还可以调用plt.savefig()将当前的Figure对象保存成图像文件,图像格式由图像文件的扩展名决定。下面的程序将当前的图表保存为“test.p
7、ng”,并且通过dpi参数指定图像的分辨率为 120,因此输出图像的宽度为“8X120 = 960”个像素。 实际上不需要调用show()显示图表,可以直接用savefig()将图表保存成图像文件.使用这种方法可以很容易编写出 批量输出图表的程序.run matplotlib_simple_plot.pyplt.savefig(test.png,dpi=120)11ppt课件绘制多轴图 一个绘图对象(figure)可以包含多个轴(axis),在Matplotlib中用轴表示一个绘图区域,可以将其理解为子图。上面的第一个例子中,绘图对象只包括一个轴,因此只显示了一个轴(子图(Axes) )。可以
8、使用subplot函数快速绘制有多个轴的图表。subplot函数的调用形式如下:subplot(numRows, numCols, plotNum)12ppt课件 subplot将整个绘图区域等分为numRows行和 numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。如果numRows,numCols和plotNum这三个数都小于10的话,可以把它们缩写为一个整数,例如subplot(323)和subplot(3,2,3)是相同的。subplot在plotNum指定的区域中创建一个轴对象。如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删
9、除。13ppt课件 下面的程序创建3行2列共6个轴,通过axisbg参数给每个轴设置不同的背景颜色。 如果希望某个轴占据整个行或者列的话,可以如下调用subplot:for 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()14ppt课件 当绘图对象中有多个轴的时候,可以通过工具栏中的Configure Subplots按钮
10、,交互式地调节轴之间的间距和轴与边框之间的距离。如果希望在程序中调节的话,可以调用subplots_adjust函数,它有left, right, bottom, top, wspace, hspace等几个关键字参数,这些参数的值都是0到1之间的小数,它们是以绘图区域的宽高为1进行正规化之后的坐标或者长度。15ppt课件 subplot()返回它所创建的Axes对象,可以将它用变量保存起来,然后用sca()交替让它们成为当前Axes对象,并调用plot()在其中绘图。如果需要同时绘制多幅图表,可以给figure()传递一个整数参数指定Figure对象的序号,如果序号所指定的figure对象已
11、经存在,将不创建新的对象,而只是让它成为当前的Figure对象。下面的程序演示了如何依次在不同图表的不同 子图中绘制曲线。 (matplotlib_multi_figure.py)16ppt课件 首先通过figure()创建了两个图表,它们的序号分别为1和2。然后在图表2中创建了上下 并排的两个子图,并用变量ax1和ax2保存。import numpy as npimport matplotlib.pyplot as pltplt.figure(1) # 创建图表1plt.figure(2) # 创建图表2ax1 = plt.subplot(211) # 在图表2中创建子图1ax2 = plt
12、.subplot(212) # 在图表2中创建子图2x = np.linspace(0, 3, 100)17ppt课件 在循环中,先调用figure(1)让图表1成为当前图表,并在其中绘图。然后调用sca(ax1) 和sca(ax2)分别让子图ax1和ax2成为当前子图,并在其中绘图。当它们成为当前子图时,包含它们的图表2也自动成为当前图表,因此不需要调用figure(2)依次在图表1和图表2的两 个子图之间切换,逐步在其中添加新的曲线 for i in xrange(5):plt.figure(1) # 选择图表1plt.plot(x, np.exp(i*x/3)plt.sca(ax1) #
13、 选择图表2的子图1plt.plot(x, np.sin(i*x)plt.sca(ax2) # 选择图表2的子图2plt.plot(x, np.cos(i*x)plt.show()18ppt课件 19ppt课件坐标轴设定 Axis容器包括坐标轴的刻度线、刻度标签、坐标网格以及坐标轴标题等内容。刻度包括主刻度和副刻度,分别通过get_major_ticks()和get_minor_ticks()方法获得。每个刻度线都是一 个XTick或YTick对象,它包括实际的刻度线和刻度标签。为了方便访问刻度线和文本,Axis 对象提供了 get_ticklabels()和get_ticklines()方法
14、,可以直接获得刻度标签和刻度线。下面例子进行绘图并得到当前子图的X轴对象axis: plt.plot(1,2,3,4,5,6)plt.show() axis = plt.gca().xaxis20ppt课件 获得axis对象的刻度位置列表: 下面获得axis对象的刻度标签以及标签中的文字: 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
15、.0, u2.5, u3.0 21ppt课件22ppt课件 下面获得X轴上表示主刻度线的列表,可看到X轴上共有10条刻度线 由于没有副刻度线,因此副刻度线列表的长度为0: 使用pyplot模块中的xticks()能够完成X轴上刻度标签的配置: axis.get_ticklines() axis.get_ticklines(minor=True) # 获得副刻度线列表plt.xticks(fontsize=16, color=red, rotation=45)23ppt课件 上面的例子中副刻度线列表为空,这是因为用于计算副刻度位置的对象默认为 NullLocator,它不产生任何刻度线。而计算主
16、刻度位置的对象为AutoLocator,它会根据当前的缩放等配置自动计算刻度的位置. matplotlib提供了多种配置刻度线位置的Locator类,以及控制刻度标签显示的Formatter 类。下面的程序设置X轴的主刻度为/4,副刻度为 /20,并且主刻度上的标签用数学符号显示 。( matplotlib_axis_text.py自定义坐标轴的刻度和文字)24ppt课件 与刻度定位和文本格式化相关的类都在matplotlib.ticker模块中定义,程序从中载入了两个类:MultipleLocaton, FuncFormatter. from matplotlib.ticker import
17、 MultipleLocator, FuncFormatterimport matplotlib.pyplot as plfrom matplotlib.ticker import MultipleLocator, 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()25ppt课件 程序中通过pi_formatter()计算出刻度值对应的刻度文本.(很繁琐)def pi_formatter(x, p
18、os): 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 n = 1:return r$%d pi$ % mif m = 1:return r$fracpi%d$ % nreturn r$frac%d pi%d$ % (m,n)26ppt课件 X = np.linspace(0, 4*np.pi, 17, endpoint=True)Xarray( 0. , 0.78539816, 1.57079633, 2
19、.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)plt.xticks( 0. , 0.78539816, 1.57079633, 2.35619449, 3.14159265, 3.92699082, 4.71238898, 5.49778714, 6.28318531, 7.06858347, 7.853
20、98163, 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$11pi/4$, r$3pi$, r$13pi/4$, r$7pi/2$,r$15pi/4$, r$4pi$)# r$ frac2pi3 $,27ppt课件 以指定值的整数倍为刻度放置主、副刻度线。 使用指定的函数计算刻度文本,它会将刻度
21、值和刻度的序号作为参数传递给计算刻度文本的函数.ax.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 ) ) # 设置两个坐标轴的范围pl.ylim(-1.5,1.5)pl.xlim(0, np.max(x)28ppt课件 pl.subplots_adjust(bottom = 0.15) # 设置图的底边距pl.g
22、rid() #开启网格# 主刻度为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/20) )# 设置刻度文本的大小for tick in ax.xaxis.get_major_ticks():tick.label1.set_fontsiz
23、e(16)pl.show()29ppt课件 30ppt课件对数坐标图 前面介绍过如何使用plot()绘制曲线图,所绘制图表的X-Y轴坐标都是算术坐标。下面看看如何在对数坐标系中绘图。 绘制对数坐标图的函数有三个:semilogx()、semilogy()和loglog(),它们分别绘制X轴为对数坐标、Y轴为对数坐标以及两个轴都为对数坐标时的图表。31ppt课件 下面的程序使用4种不同的坐标系绘制低通滤波器的频率响应曲线。 其中,左上图为plot()绘制的算术坐标系,右上图为semilogx()绘制的X轴对数坐标系,左下图 为semilogy()绘制的Y轴对数坐标系,右下图为loglog()绘制
24、的双对数坐标系。使用双对数坐标系表示的频率响应曲线通常被称为波特图。(matplotlib_log.py) import numpy as npimport matplotlib.pyplot as pltw = np.linspace(0.1, 1000, 1000)p = np.abs(1/(1+0.1j*w) # 计算低通滤波器的频率响应32ppt课件plt.subplot(221)plt.plot(w, p, linewidth=2)plt.ylim(0,1.5)plt.subplot(222)plt.semilogx(w, p, linewidth=2)plt.ylim(0,1.5)
25、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()33ppt课件 34ppt课件极坐标图 极坐标系是和笛卡尔(X-Y)坐标系完全不同的坐标系,极坐标系中的点由一个夹角和一段相对中心点的距离来表示。下面的程序绘制极坐标图, (matplotlib_polar.py)。 import numpy as npimport matplotlib.pyplot as plttheta = np
展开阅读全文