
《Python数据分析与应用》教学课件05Matplotlib实现数据可视化.pptx
120页模块5Matplotlib实现数据可视化模块5Matplotlib实现数据可视化Matplotlib首次发表于2007年,由于在函数设计上参考了MATLAB,其名字以“Mat”开头,中间的“plot”表示绘图这一作用,而结尾的“lib”则表示它是一个集合近年来,Matplotlib在开源社区的推动下,在科学计算领域得到了广泛的应用,成为了Python中应用非常广的绘图工具包之一Matplotlib中应用最广的是matplotlib.pyplot模块本模块将讲述基础统计图形的绘制方法目录CONTENT010102020303Matplotlib基础案例:人口数据分析Matplotlib数据可视化Matplotliblib基础5.1Matplotlib库是专门用于开发图表(包括3D图表)的,近年来被广泛应用于科技领域Matplotlib的主要任务之一就是提供一套表示和操作图形对象以及它的内部对象的函数和工具pyplot是Matplotlib的内部模块,该模块提供操作Matplotlib库的经典Python编程接口,有着自己的命名空间,需要单独导入NumPy库matplotlib.pyplot(以下简称pyplot)是一个命令风格函数的集合,使Matplotlib的机制更像MATLAB。
每个绘图函数都可对图形进行一些更改,如创建图形,在图形中创建绘图区域,在绘图区域绘制一些线条,使用标签装饰绘图等在pyplot中,各种状态跨函数调用保存,以便跟踪诸如当前图形和绘图区域之类的东西,并且绘图函数始终指向当前轴域5.1Matplotlib基础5.1.1pyplot基础语法5.1Matplotlib基础5.1.1pyplot基础语法pyplot基本绘图流程主要分为3个部分,如图5-1所示图5-1pyplot基本绘图流程5.1Matplotlib基础5.1.1pyplot基础语法1.创建画布与创建子图第一部分的主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形当只需要绘制一幅简单的图形时,这部分可以省略pyplot中创建画布及创建并选中子图的常用函数如表5-1所示5.1Matplotlib基础5.1.1pyplot基础语法2.添加画布内容第二部分是绘图的主题部分其中的添加标题、添加坐标轴名称、绘制图形等步骤是并列的,没有先后顺序,可以先绘制图形,也可以先添加各类标签但是添加图例一定要在绘制图形之后pyplot中添加各类标签和图例的常用函数如表5-2所示。
5.1Matplotlib基础5.1.1pyplot基础语法3.保存与显示图形第三部分主要用于保存与显示图形,这部分内容的常用函数只有两个,且参数很少,如表5-3所示5.1Matplotlib基础5.1.1pyplot基础语法最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制,如下例所示首先要导入pyplot模块,并将其命名为pltIn1:importmatplotlib.pyplotasplt导入这个模块时,plt对象及其图像处理功能已被实例化且可以使用因此,把数据传给plt函数,然后直接使用即可In2:plt.plot(1,2,3,4)Out2:结果显示生成了一个Line2D对象该对象为一条直线,数据点用蓝线串在一起,它表示图表中各数据点的线性延伸趋势,如图5-2所示5.1Matplotlib基础5.1.1pyplot基础语法图5-2简单绘图示例如果只是将一个数字列表或数组传给plt.plot函数,Matplotlib就会假定所传入的是图表的y值,于是将其与一个序列的x值对应起来,x的取值依次为0、1、2、35.1Matplotlib基础5.1.1pyplot基础语法通常,图形表示的是一对对的(x,y)。
因此,如果要正确定义图表,就必须定义两个数组,其中第一个数组为x轴的各个值,第二个数组为y轴的值一个简单的不含子图绘制的标准绘图流程如下例所示,图形如图5-3所示In3 : import matplotlib.pyplot as pltimport numpy as npx = np.arange(0,np.pi*2,0.01)y1 = np.sin(x)y2 = np.cos(x)plt.title(sin(x)&cos(x) #添加标题plt.xlabel(x) #添加x轴名称plt.ylabel(y) #添加y轴名称plt.xlim(0,np.pi*2) #规定x轴范围5.1Matplotlib基础plt.ylim(-1,1)#规定y轴范围plt.xticks(0,1,2,3,4,5,6)#规定x轴刻度plt.yticks(-1,-1/2,0,1/2,1)#规定y轴刻度plt.plot(x,y1,x,y2)plt.legend($sin(x)$,$cos(x)$)plt.savefig(f:/sin.png)5.1.1pyplot基础语法5.1Matplotlib基础此外,plot函数还可以接收第三个参数,用于描述数据点在图标中的显示方式,如图5-4所示。
图5-3标准绘图示例5.1.1pyplot基础语法5.1Matplotlib基础In4 : import matplotlib.pyplot as pltimport numpy as npx = np.arange(0,np.pi*2,0.01)y1 = np.sin(x)y2 = np.cos(x)plt.title(sin(x)&cos(x) #添加标题plt.xlabel(x) #添加x轴名称plt.ylabel(y) #添加y轴名称plt.xlim(0,np.pi*2) #规定x轴范围plt.ylim(-1,1) #规定y轴范围plt.xticks(0,1,2,3,4,5,6) #规定x轴刻度plt.yticks(-1,-0.5,0,0.5,1) #规定y轴刻度plt.plot(x,y1, ,x,y2,.)plt.legend($sin(x)$,$cos(x)$)plt.savefig(f:/sin1.png)5.1.1pyplot基础语法5.1Matplotlib基础5.1.1pyplot基础语法图5-4不同线形示例Matplotlib还可以在同一图形中绘制出多种不同的趋势图,如图5-5所示。
5.1Matplotlib基础5.1.1pyplot基础语法In5 : import matplotlib.pyplot as pltimport numpy as npx = np.arange(0,np.pi*2,0.01)y1 = np.sin(x)y2 = np.sin(x-np.pi/2)y3 = np.sin(x+np.pi/2)plt.xlabel(x)plt.ylabel(y)plt.xlim(0,np.pi*2)plt.ylim(-1,1)plt.xticks(0,1,2,3,4,5,6)plt.yticks(-1,-0.5,0,0.5,1)plt.plot(x,y1,b-,x,y2,r-,x,y3,g)plt.savefig(f:/sin2.png)5.1Matplotlib基础5.1.1pyplot基础语法图5-5不同趋势示例到目前为止,我们所用的pyplot命令都是绘制单个图形的pyplot命令也可以同时绘制多个图形,而在每个图形中,又可以绘制几个不同的子图subplot()函数不仅可以将图形分为不同的绘图区域,还能激活特定子图,以便用命令控制它subplot()函数用参数设置分区模式和当前子图。
subplot()函数的参数由三个整数组成:第一个数字决定图形沿垂直方向被分为几部分,第二个数字决定图形沿水平方向被分为几部分,第三个数字设定可以直接用命令控制的子图5.1Matplotlib基础plt.plot(t,y1,b-.)plt.subplot(212)5.1.1pyplot基础语法下面绘制两种三角函数(正弦和余弦函数)趋势图最佳方式是把画布分为上下两个向水平方向延伸的子图,如图5-6所示因此,作为参数传入的两个数字应分别为211和212In6 : import matplotlib.pyplot as pltimport numpy as npt = np.arange(0,5,0.1)y1 = np.sin(2*np.pi*t)y2 = np.cos(2*np.pi*t)plt.subplot(211)plt.xlabel(x)plt.ylabel(y)plt.xticks(0,1,2,3,4,5)plt.yticks(-1,-0.5,0,0.5,1)plt.xlabel(x)plt.ylabel(y)plt.xticks(0,1,2,3,4,5,6)plt.yticks(-1,-0.5,0,0.5,1)plt.plot(t,y2,r-)plt.savefig(f:/5-6.png)5.1Matplotlib基础5.1.1pyplot基础语法图5-6分为上下两个子图还可以把图形分为左右两个子图。
这时,subplot()函数的参数为121和122,如图5-7所示图5-7分为左右两个子图5.1Matplotlib基础5.1.1pyplot基础语法In7 : import matplotlib.pyplot as pltimport numpy as npt = np.arange(0,1,0.05)y1 = np.sin(2*np.pi*t)y2 = np.cos(2*np.pi*t)plt.subplot(121)plt.xlabel(x)plt.ylabel(y)plt.xticks(0,0.2,0.4,0.6,0.8,1)plt.yticks(-1,-0.5,0,0.5,1)plt.plot(t,y1,b-.)plt.subplot(122)plt.xlabel(x)plt.ylabel(y)plt.xticks(0,0.2,0.4,0.6,0.8,1)plt.yticks(-1,-0.5,0,0.5,1)plt.plot(t,y2,r-)plt.savefig(f:/5-7.png)5.1Matplotlib基础5.1.2设置图形属性1.添加文本根据前例,标题的添加用title()函数即可,xlabel()和ylabel()函数专门用于添加轴标签,把要显示的文本以字符串形式传给这两个函数作为参数。
还可以用关键字参数修改属性例如,可以修改标题的字体,使用更大的字号;指定轴标签的颜色为灰色,从而反衬出图形的标题,如图5-8所示图5-8设置关键字参数5.1Matplotlib基础5.1.2设置图形属性In8 : import matplotlib.pyplot as pltimport numpy as npx = np.arange(0,np.pi*2,0.01)y1 = np.sin(x)y2 = np.cos(x)plt.title(sin(x)&cos(x),fontsize=20,fontname=Times New Roman)plt.xlabel(x,color=gray)plt.ylabel(y,color=gray)plt.xlim(0,np.pi*2)plt.ylim(-1,1)plt.xticks(0,1,2,3,4,5,6)plt.yticks(-1,-0.5,0,0.5,1)plt.plot(x,y1,x,y2)plt.legend($sin(x)$,$cos(x)$)plt.savefig(f:/5-8.png)5.1Matplotlib基础5.1.2设置图形属性Matplotlib的功能不限于此,pyplot允许在图形任意位置添加文本。
这个功能由text()函数来实现其语法如下text(x,y,s,fontdict=None,*kwargs)其中,参数x、y为文本在图形中位置的坐标;s为要添加的字符串;fontdict(。












