1一、前言..............................................................................................1二、matplotlib简介................................................................................2三、Matplotlib使用入门...........................................................................23.1函数处理部分(numpy的使用).........................................................23.2Matplotlib使用风格介绍..................................................................4四、2D图的画法....................................................................................94.1坐标轴.......................................................................................91.坐标区间设置.........................................................................92.设置网格线..........................................................................123.自定义坐标轴刻度..................................................................134.自动标注坐标轴刻度................................................................134.2线条.........................................................................................144.3标签注释....................................................................................164.4图像排版....................................................................................16五、3D绘图方法...................................................................................16六、后记............................................................................................16一、前言接触python有近半年的时间了,和大多数接触过python的朋友一样,我被它的简单的表述和清晰的描写思路深深吸引,python的三方模块很是丰富,在不断的学习中,渐渐里就接触到了matplotlib,官方的英文文档很详细,虽然是英文的,我想对于只要过了四级的朋友,仔细看看明白不是什么难事,原始的官方英文文档有800多页,详细是不用说,但还是有点罗嗦,本书的目的是让你能快速知道怎么使用matplotlib,当然个人所总结的方法未必对于每个人都是容易接受的,但相信大多数人看完本书之后会对于matplotlib有一个比较清晰的理解,读者如果在文中发现错误还请麻烦反馈一下。本书是对于学习中需要用到matplotlib的人群编写的,你在阅读之前可能需要了解一些python的知识,如果你对于python还一点不懂,那么还是请你看下python相关的文档吧。如在阅读本书中遇到任何问题请联系mastersellyishenggudou@gmail.com本文在线网址为:在线网址为:作者个人博客网址为:二、matplotlibmatplotlibmatplotlibmatplotlib简介Matplotlib是一个在python下实现的类matlib的纯python的三方库,旨在用python实现matlab的功能,是python下最出色的绘图库,功能很完善,其风格跟matlib很相似,2同时也继承了python的简单明了的风格,其可以很方便地设计和输出二维以及三维的数据,其提供了常规的笛卡尔坐标,极坐标,球坐标,三维坐标等。其输出的图片质量也达到了科技论文中的印刷质量,日常的基本绘图更不在话下。其使用中要先安装numpy库(一个python下数组处理的三方库,可以很方便的处理矩阵,数组),对于做数据图,其原理很简单,就是把函数变成关于X,Y,Z的坐标点的数组,如函数Y=X2,我们画图是也是先找一组特征点(x,y),然后连接成线,matplotlib出图的过程和我们画图过程差不多,先生成X的一个取值数组,如要画区间[0,1]的图像,则先取[0,1]之内的一组数组(如:x=arange(0,1,0.01)表示x以0.01为步长取100个点),然后去对应x的对应y的值的一组数据,这样以坐标(x,y)画出的图就是一条曲线了。matplotlib对于图像美化方面的比较完善,可以自定义线条的颜色和样式,可以在一张绘图纸上绘制多张小图,也可以在一张图上绘制多条线,可以很方便地将数据可视化并对比分析。三、MatplotlibMatplotlibMatplotlibMatplotlib使用入门Matplotlib的使用中有好几种输出风格,有matlab的风格,和官方文档的使用的as风格,各有所长,本文对比介绍matplotlib官方文档中的使用风格,我们画图的目的是要将函数已图像显现出来,所以我们要用python处理的东西有两个,一个是函数,另一个是图像,函数部分在matplotlib的使用中是用了numpy这个三方库,这个库有着很大的科学计算功能,但是不用担心,在使用中你会发现他的好用,3.13.13.13.1函数处理部分(函数处理部分(函数处理部分(函数处理部分(numpynumpynumpynumpy的使用)的使用)的使用)的使用)具体的使用可以参见numpy的文档我们使用matplotlib将数据可视化时基本上我们只用到两种方法1:arange函数类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值:importnumpyasnpnp.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])此函数在区间[0,1]之间以0.1为步长生成一个数组。如果第三个参数预设为1np.arange(0,10)array([0,1,2,3,4,5,6,7,8,9])np.arange(0,5.6)array([0.,1.,2.,3.,4.,5.])np.arange(0.3,4.2)array([0.3,1.3,2.3,3.3])2:linspace函数通过指定开始值、终值和元素个数来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值:np.linspace(0,1,12)array([0.,0.09090909,0.18181818,0.27272727,0.36363636,30.45454545,0.54545455,0.63636364,0.72727273,0.81818182,0.90909091,1.])第三个参数num预设为50np.linspace(0,10)array([0.,0.20408163,0.40816327,0.6122449,0.81632653,1.02040816,1.2244898,1.42857143,1.63265306,1.83673469,2.04081633,2.24489796,2.44897959,2.65306122,2.85714286,3.06122449,3.26530612,3.46938776,3.67346939,3.87755102,4.08163265,4.28571429,4.48979592,4.69387755,4.89795918,5.10204082,5.30612245,5.51020408,5.71428571,5.91836735,6.12244898,6.32653061,6.53061224,6.73469388,6.93877551,7.14285714,7.34693878,7.55102041,7.75510204,7.95918367,8.16326531,8.36734694,8.57142857,8.7755102,8.97959184,9.18367347,9.3877551,9.59183673,9.79591837,10.])Numpy库有一般math库函数的数组实现;如sin,cos,log,x=np.arange(0,np.pi/2,0.1)y=sin(x)Traceback(mostrecentcalllast):Filepyshell#18,line1,inmoduley=sin(x)NameError:name'sin'isnotdefinedy=np.sin(x)yarray([0.,0.09983342,0.19866933,0.29552021,0.38941834,0.47942554,0.56464247,0.64421769,0.71735609,0.78332691,0.84147098,0.89120736,0.93203909,0.96355819,0.98544973,0.99749499])数组的最后一项不是1是因为数组的数据不是标准的浮点型的数据xarray([0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.,1.1,1.2,1.3,1.4,1.5])如果要精确的浮点计算请参见numpy文档。基本函数(三角,对数,平方,立方,等)的使用就是在函数前加上np.这样就能实现数组的函数计算。3.23.23.23.2MatplotlibMatplotlibMatplotlibMatplotlib使用风格介绍使用风格介绍使用风格介绍使用风格介绍Matplotlib的使用中有好几种输出风格,有类matlab的风格,和官方文档的使用的as风格,4各有所长,下面详细介绍这两种方法先介绍matlab风格下边的例子左边是Matplotlib的类matlab的风格,右边是原始的matlab实现,在Ipython下可以更好地使用matl