Python数据可视化之matplotlib实践(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-20 07:05:56

点击下载

作者:刘大成

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python数据可视化之matplotlib实践

Python数据可视化之matplotlib实践试读:

前言

通过本书的学习,读者可以根据自身需求灵活使用matplotlib中的绘图语句,设置图表组成元素,以及进行泛化性的图形设置。值得注意的是,matplotlib绘图库的操作是通过API实现的,一种操作方法是类似MATLAB的函数接口的API;另一种操作方法是面向对象的API。这两种API可以并行使用,不过函数接口的API的易用性明显好于面向对象的API。所以,本书入门篇主要使用函数接口的API,精进和演练篇主要使用面向对象的API。

本书主要内容

第1篇 使用matplotlib库绘制基本统计图形,讲解matplotlib库的图表组成元素的概念和实现方法,介绍细化matploblib库的图形内容的基本操作方法。

第2篇 设置坐标轴的刻度样式,添加不同形式的注解,划分绘图区域,设置共享绘图区域的坐标轴。

第3篇 主要围绕数据可视化的主要展示窗口—坐标轴,来探讨相关话题,包括设置坐标轴的位置、控制坐标轴刻度显示的方法及移动坐标轴位置等话题。

第4篇 从通识和泛化的角度,探讨进行Python数据可视化需要使用的知识和技术,包括修改matplotlib的配置,设置文本属性,使用不同形式的配色模式,以及展示和保存图形。

读者对象

如果读者了解一些Python的基础编程知识,那是最好不过的事情了,但是如果不了解也没有关系,因为书中的Python代码都是非常易读的,而且重点代码也都会逐一细致地进行解释。与此同时,书中在必要的章节会介绍统计学的相关概念和计算方法,方便读者将宝贵的时间和精力放在数据可视化的实践本身。

你可以是第一次接触数据可视化的人员,甚至是没有任何MATLAB或类似使用统计分析软件的应用经验的人员;你也可以是对Python有基本了解的运营人员、数据分析师、大数据工程师、机器学习工程师、数据挖掘工程师,甚至是人工智能专家、运维工程师、软件测试人员,以及对Python数据可视化有兴趣的各行业的读者。

本书特色

本书在列举大量Python数据可视化案例的过程中,将重点放在Python数据可视化思路、Python数据可视化技术和方法的探讨上,使读者通过阅读本书,能够在自己的实际工作和学习中灵活应用,并解决现实的Python数据可视化问题,而不是拘泥于书中的案例和方法,从而实现“授之以渔”的学习效果。

阅读建议

本书的实例代码都比较简单易懂,而且代码量很小,因而我没有将代码放在GitHub或相关可以下载实例代码的平台上,目的就是希望读者可以独立敲入完整代码,真正动手实践书中讲过的每一个实例,探索每一个实例,通过动手实践的方式,既能掌握Python数据可视化的编程知识,又能领会matplotlib的精髓,实现在做中学、在学中练的目标。正像苏轼的诗句中所言的“竹外桃花三两枝,春江水暖鸭先知。”之所以给读者这样的建议,目的就是让读者主动探索和掌握绘制图表的实现方法。

本书的示例代码都是基于Python 2.7、matplotlib 1.5.3和NumPy 1.13.1实现的。在书中的附录部分会详细讲解Python 2.7、matplotlib 1.5.3和NumPy 1.13.1的安装方法。

联系与反馈

由于本人的学识和能力有限,书中存在纰漏之处在所难免,欢迎广大读者针对书中的错误、阅读体会和建议等给予反馈。如果你对matplotlib也有自己的见解和研究兴趣,欢迎与我联系。请将反馈信息发送到电子邮箱pdmp100@163.com中。

致谢

谈到本书的出版,还要从读研究生时讲起,那时候我就一直有写书的想法,但当时由于阅历和技能都很不成熟,就暂时放下了。毕业之后,我一直从事数据分析、机器学习方面的工作,随着工作经验的积累,也逐渐找到自己的研究兴趣。机缘巧合的是,这段时间恰好有精力可以完成自己的这个梦想。

在写作本书的过程中,我得到了很多人的帮助和支持。首先,要感谢我的父母,在求学和工作的过程中一直做我的坚强后盾,我也一直自豪于生活在“生产性的简朴蜂巢”中。再有,在本书的编辑过程中,得到电子工业出版社石倩编辑耐心、细致的帮助和指导,让我获益良多。最后,要感谢我的妻子一直以来对我工作的理解和支持,而且也要感谢我的朋友和同事对我的成长所给予的关心和帮助。

不忘初心,坚定前行,时间会给你所想的一切。第1篇入门matplotlib库是Python中绘制二维、三维图表的数据可视化工具。它的主要特点如下。● 使用简单绘图语句实现复杂绘图效果;● 以交互式操作实现渐趋精细的图形效果;● 使用嵌入式的LaTeX输出具有印刷级别的图表、科学表达式和符号文本;● 对图表的组成元素实现精细化控制。接下来就让我们带着好奇心走进matplotlib的数据可视化世界吧。第1章 使用函数绘制matplotlib的图表组成元素1.1 绘制matplotlib图表组成元素的主要函数

首先,我们来了解一下matplotlib是如何组织内容的。在一个图形输出窗口中,底层是一个Figure实例,我们通常称之为画布,包含一些可见和不可见的元素。

在画布上,自然是图形,这些图形就是Axes实例,Axes实例几乎包含了我们要介绍的matplotlib组成元素,例如坐标轴、刻度、标签、线和标记等。Axes实例有x轴和y轴属性,也就是可以使用Axes.xaxis和Axes.yaxis来控制x轴和y轴的相关组成元素,例如刻度线、刻度标签、刻度线定位器和刻度标签格式器。

这么多组成元素该如何操作呢?很幸运,matplotlib为我们准备了快速入门通道,那就是matplotlib.pyplot模块的API,通过调用API中的函数,我们就可以快速了解应该如何绘制这些组成元素了,例如matplotlib.pyplot.xlim()和matplotlib.pyplot.ylim()就是控制x轴和y轴的数值显示范围。下面,我们就用图1.1来初识绘制matplotlib的图表组成元素的主要函数。图1.1

本章我们以图1.1为讲解切入点,从这些函数的函数功能、调用签名、参数说明和调用展示四个方面来全面阐述API函数的使用方法和技术细节。帮助读者初步了解matplotlib。1.2 准备数据

我们导入第三方包NumPy和快速绘图模块pyplot,其中科学计算包NumPy是matplotlib库的基础,也就是说,matplotlib库是建立在NumPy基础之上的Python绘图库。图1.1的数据生成代码实现如下:import matplotlib.pyplot as pltimport numpy as np

现在,我们就可以定义一些完成绘制图1.1所需要的数据了,代码如下:x = np.linspace(0.5,3.5,100)y = np.sin(x)y1 = np.random.randn(100)

其中,函数linspace(0.5,3.5,100)是表示在0.5至3.5之间均匀地取100个数,函数randn(100)表示在标准正态分布中随机地取100个数。1.3 绘制matplotlib图表组成元素的函数用法

下面我们用函数的形式学习绘图,反过来,再用绘图来认识函数。需要注意的是,下面函数中的位置参数用参数名称本身进行调用签名的讲解,关键字参数用图1.1中的实际图形展示样式进行调用签名的说明。

1.3.1 函数plot()——展现变量的趋势变化

函数功能:展现变量的趋势变化。

调用签名:plt.plot(x,y,ls="-",lw=2,label="plot figure")

参数说明

● x:x轴上的数值。

● y:y轴上的数值。

● ls:折线图的线条风格。

● lw:折线图的线条宽度。

● label:标记图形内容的标签文本。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.cos(x)plt.plot(x,y,ls="-",lw=2,label="plot figure")plt.legend()plt.show()(2)运行结果

运行结果如图1.2所示。图1.2

1.3.2 函数scatter()——寻找变量之间的关系

函数功能:寻找变量之间的关系。

调用签名:plt.scatter(x,y1,c="b",label="scatter figure")

参数说明

● x:x轴上的数值。

● y:y轴上的数值。

● c:散点图中的标记的颜色。

● label:标记图形内容的标签文本。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.random.rand(1000)plt.scatter(x,y,label="scatter figure")plt.legend()plt.show()(2)运行结果

运行结果如图1.3所示。图1.3

1.3.3 函数xlim()——设置x轴的数值显示范围

函数功能:设置x轴的数值显示范围。

调用签名:plt.xlim(xmin,xmax)

参数说明

● xmin:x轴上的最小值。

● xmax:x轴上的最大值。

● 平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数ylim()上。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.random.rand(1000)plt.scatter(x,y,label="scatter figure")plt.legend()plt.xlim(0.05,10)plt.ylim(0,1)plt.show()(2)运行结果

运行结果如图1.4所示。图1.4

1.3.4 函数xlabel()——设置x轴的标签文本

函数功能:设置x轴的标签文本。

调用签名:plt.xlabel(string)

参数说明

● string:标签文本内容。

● 平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数ylabel()上。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.sin(x)plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")plt.legend()plt.xlabel("x-axis")plt.ylabel("y-axis")plt.show()(2)运行结果

运行结果如图1.5所示。图1.5

1.3.5 函数grid()——绘制刻度线的网格线

函数功能:绘制刻度线的网格线。

调用签名:plt.grid(linestyle=":",color="r")

参数说明

● linestyle:网格线的线条风格。

● color:网格线的线条颜色。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.sin(x)plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")plt.legend()plt.grid(linestyle=":",color="r")plt.show()(2)运行结果

运行结果如图1.6所示。图1.6

1.3.6 函数axhline()——绘制平行于x轴的水平参考线

函数功能:绘制平行于x轴的水平参考线。

调用签名:plt.axhline(y=0.0,c="r",ls="--",lw=2)

参数说明

● y:水平参考线的出发点。

● c:参考线的线条颜色。

● ls:参考线的线条风格。

● lw:参考线的线条宽度。

● 平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数axvline()上。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.sin(x)plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")plt.legend()plt.axhline(y=0.0,c="r",ls="--",lw=2)plt.axvline(x=4.0,c="r",ls="--",lw=2)plt.show()(2)运行结果

运行结果如图1.7所示。图1.7

1.3.7 函数axvspan()——绘制垂直于x轴的参考区域

函数功能:绘制垂直于x轴的参考区域。

调用签名:plt.axvspan(xmin=1.0,xmax=2.0,facecolor="y",alpha=0.3)。

参数说明

● xmin:参考区域的起始位置。

● xmax:参考区域的终止位置。

● facecolor:参考区域的填充颜色。

● alpha:参考区域的填充颜色的透明度。

● 平移性:上面的函数功能、调用签名和参数说明可以平移到函数axhspan()上。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.sin(x)plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")plt.legend()plt.axvspan(xmin=4.0,xmax=6.0,facecolor="y",alpha=0.3)plt.axhspan(ymin=0.0,ymax=0.5,facecolor="y",alpha=0.3)plt.show()(2)运行结果

运行结果如图1.8所示。图1.8

1.3.8 函数annotate()——添加图形内容细节的指向型注释文本

函数功能:添加图形内容细节的指向型注释文本。

调用签名:plt.annotate(string,xy=(np.pi/2,1.0),xytext=((np.pi/2)+0.15,1.5),weight="bold",color="b", arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))。

参数说明

● string:图形内容的注释文本。

● xy:被注释图形内容的位置坐标。

● xytext:注释文本的位置坐标。

● weight:注释文本的字体粗细风格。

● color:注释文本的字体颜色。

● arrowprops:指示被注释内容的箭头的属性字典。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.sin(x)plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")plt.legend()plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,.8),weight="bold",color="b",arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))plt.show()(2)运行结果

运行结果如图1.9所示。图1.9

1.3.9 函数text()——添加图形内容细节的无指向型注释文本

函数功能:添加图形内容细节的无指向型注释文本。

调用签名:plt.text(x,y,string,weight="bold",color="b")。

参数说明

● x:注释文本内容所在位置的横坐标。

● y:注释文本内容所在位置的纵坐标。

● string:注释文本内容。

● weight:注释文本内容的粗细风格。

● color:注释文本内容的字体颜色。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.sin(x)plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")plt.legend()plt.text(3.10,0.09,"y=sin(x)",weight="bold",color="b")plt.show()(2)运行结果

运行结果如图1.10所示。图1.10

1.3.10 函数title()——添加图形内容的标题

函数功能:添加图形内容的标题。

调用签名:plt.title(string)。

参数说明

● string:图形内容的标题文本。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.sin(x)plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")plt.legend()plt.title("y=sin(x)")plt.show()(2)运行结果

运行结果如图1.11所示。图1.11

1.3.11 函数legend()——标示不同图形的文本标签图例

函数功能:标示不同图形的文本标签图例。

调用签名:plt.legend(loc="lower left")。

参数说明

● loc:图例在图中的地理位置。

调用展示(1)代码实现import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.05,10,1000)y = np.sin(x)plt.plot(x,y,ls="-.",lw=2,c="c",label="plot figure")plt.legend(loc="lower left")plt.show()(2)运行结果

运行结果如图1.12所示。图1.121.4 函数组合应用

1.3节将绘制图1.1的重要组成元素的函数从函数功能、调用签名、参数说明和调用展示等方面讲解使用方法,进一步,在调用展示中又通过代码实现和运行结果两方面详细解释了绘制这些组成元素的函数的使用方法。因此,通过这些函数的多维度学习,读者基本可以将图1.1中的内容很好地复现出来,接下来,就让我们看看绘制图1.1的源代码,如下所示。

在上面的源代码中,除了用线框圈起来的部分我没有阐述,其余部分都已经介绍过了,线框部分会在接下来的章节中详细给大家讲解。现在,读者就动手输入上面的代码,看看输出结果是什么样的?能否感受到matplotlib绘图的精细与精美?第2章 使用统计函数绘制简单图形

在1.1节中,我们介绍了属于统计图形范围的折线图和散点图。接下来会讲解一些大家比较熟悉却又经常混淆的统计图形,掌握这些统计图形可以让读者对数据可视化有一个深入理解,并正确使用。

我们从基础统计图形函数的功能、调用签名、参数说明和调用展示四个层面来讲解统计函数的使用方法和参数概念,以此帮助读者建立对Python数据可视化的直观认识,培养读者对matplotlib实践的探索兴趣和应用信心。2.1 函数bar()——用于绘制柱状图

函数功能:在x轴上绘制定性数据的分布特征。

调用签名:plt.bar(x,y)。

参数说明

● x:标示在x轴上的定性数据的类别。

● y:每种定性数据的类别的数量。

调用展示(1)代码实现# -*- coding:utf-8 -*import matplotlib as mplimport matplotlib.pyplot as pltmpl.rcParams["font.sans-serif"]=["SimHei"]mpl.rcParams["axes.unicode_minus"]=False# some simple datax = [1,2,3,4,5,6,7,8]y = [3,1,4,5,8,9,7,2]# create barplt.bar(x,y,align="center",color="c",tick_label=["q","a","c","e","r","j","b","p"],hatch="/")# set x,y_axis labelplt.xlabel("箱子编号")plt.ylabel("箱子重量(kg)")plt.show()(2)运行结果

运行结果如图2.1所示。图2.12.2 函数barh()——用于绘制条形图

函数功能:在y轴上绘制定性数据的分布特征。

调用签名:plt.barh(x,y)。

参数说明

● x:标示在y轴上的定型数据的类别。

● y:每种定性数据的类别的数量。

调用展示(1)代码实现# -*- coding:utf-8 -*import matplotlib as mpl

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载