今天我们针对matplotlib
给大家解答一下
划
重
点
matplotlib简介
Python扩展库matplotlib依赖于扩展库numpy和标准库tkinter,可以绘制多种形式的图形,包括折线图、散点图、饼状图、柱状图、雷达图等,图形质量可以达到出版要求。matplotlib不仅在数据可视化领域有重要的应用,也常用于科学计算可视化。
Python扩展库matplotlib包括pylab、pyplot等绘图模块以及大量用于字体、颜色、图例等图形元素的管理与控制的模块。其中pylab和pyplot模块提供了类似于MATLAB的绘图接口,支持线条样式、字体属性、轴属性以及其他属性的管理和控制,可以使用非常简洁的代码绘制出优美的各种图案。
使用pylab或pyplot绘图的一般过程为:首先读入数据,然后根据实际需要绘制折线图、散点图、柱状图、饼状图、雷达图或三维曲线和曲面,接下来设置轴和图形属性,最后显示或保存绘图结果。
要注意的是,在绘制图形以及设置轴和图形属性时,大多数函数都具有很多可选参数支持个性化设置,而其中很多参数又具有多个可能的值,例如,颜色、散点符号、线型等。本章重点介绍相关函数的用法,并没有给出每个参数的所有可能取值,这些可以通过Python的内置函数help或者查阅matplotlib官方在线文档文件夹中的源代码获取更加完整的帮助信息。
绘制带有中文标题、标签和图例的折线图
在默认情况下,绘图时是不支持显示中文的,除非明确设置了中文字体。
例15-1绘制带有中文标题、标签和图例的正弦和余弦图像。
基本思路:首先使用Python扩展库numpy生成一个0~2π步长为0.01的数组,计算该数组中数值的正弦值和余弦值,然后使用matplotlib.pylab中的plot函数绘制折线图。所谓折线图,也就是把所有数据点按顺序依次连接构成的图,如果数据点足够密集,可以实现光滑曲线的效果。
绘制散点图
同样一组数据,使用plot函数可以绘制折线图,而使用scatter函数则可以绘制散点图,呈现类似于采样的效果。不过一般而言,如果要绘制的数据点呈现出曲线的形状,那么绘制散点图时要使数据点间隔稍大一些,以免因为数据点过于密集而呈现出光滑曲线的效果。另外,散点图也常用于描述数据点的分布情况。
例15-2绘制余弦曲线散点图。
基本思路:使用numpy生成数组以及对应的余弦值数据,然后使用scatter函数绘制散点图。
例15-3 设置散点图的线宽、散点符号及大小。
基本思路:在使用scatter函数绘制散点图时,可以使用参数s指定散点符号的大小,使用参数marker(可能的取值有'o'、'v'、'+'、'*'等)指定散点符号,使用参数linewidths指定线宽。
例15-4 绘制大小与位置有关的红色散点五角星。
基本思路:在使用scatter函数绘制散点图时,可以使用参数s指定散点大小的计算公式,使用参数c指定散点颜色,使用参数marker指定散点符号(将其设置为'*'可以绘制五角星)。
绘制饼状图
饼状图适合描述数据的分布,尤其是描述各类数据占比的场合,例如,大型连锁商店各分店营业额分布情况。
例15-5 饼状图绘制与属性设置。
基本思路:matplotlib.pyplot提供了用于绘制饼状图的pie函数,并且支持绘制饼状图时设置标签、颜色、起始角度、绘制方向(顺时针或逆时针)、中心、半径、阴影等各种属性。
图15-5 饼状图效果
绘制柱状图
柱状图常用来描述不同组之间数据的差别。matplotlib提供了用于绘制柱状图的bar函数,并且提供了大量参数设置柱状图的属性。
例15-6 绘制柱状图并设置图形属性和文本标注。
基本思路:在使用bar函数绘制柱状图时,可以使用color参数设置柱的颜色,使用alpha设置透明度,使用edgecolor参数设置边框颜色,使用linestyle设置边框样式,使用linewidth参数设置边框线宽,使用hatch参数设置柱的内部填充符号。绘制完柱状图之后,使用text函数在每个柱的顶端指定位置显示对应的数值进行标注。
绘制雷达图
雷达图是一种常用的数据可视化与展示技术,可以把多个维度的信息在同一个图上展示出来,使得各项指标一目了然。matplotlib提供了绘制雷达图的技术,本节将通过一个案例进行介绍。
例15-7 绘制雷达图。
基本思路:使用matplotlib.pyplot的polar函数可以绘制雷达图,并通过参数设置雷达图的角度、数据、颜色、线型、端点符号以及线宽等属性。
运行效果如图15-7所示。
图15-7 雷达图效果
绘制三维图形
在进行数据可视化时,有可能需要同时表现多维度的信息。matplotlib也提供了三维图形的绘制功能,本节通过三维曲线、三维曲面和三维柱状图的绘制来演示一下相关的技术。
例15-8 绘制三维曲线。
基本思路:在使用matplotlib.pyplot的plot函数绘制图形时,如果提供了x、y和z三个坐标轴的数据,则可以绘制三维曲线,不过在此之前需要使用gca(projection='3d')设置三维模式。
例15-9 绘制三维曲面。
基本思路:使用matplotlib.pyplot的subplot(projection='3d')函数调用创建三维图形子图之后,可以使用子图对象的plot_surface方法绘制三维曲面,并允许设置水平和垂直方向的步长,步长越小则曲面越平滑。
例15-10 绘制三维柱状图。
基本思路:使用matplotlib.pyplot的subplot(projection='3d')函数调用创建三维图形子图之后,可以使用子图对象的bar3d方法绘制三维柱状图,可以通过参数指定每个柱的x、y、z起始坐标和各轴的宽度、厚度、高度等信息。
切分绘图区域
在进行数据可视化或科学计算可视化时,经常需要把多个结果绘制到一个窗口中方便比较,这时可以使用本节介绍的技术对绘图区域进行切分,并在不同的区域中绘制相应 的图形。
例15-11 切分绘图区域并绘制图形。
基本思路:使用pyplot的subplot函数把绘图区域切分为多个区域,然后在调用plot函数绘图之前先使用sca函数选择不同的区域,就可以在相应的区域中进行绘图。
设置图例
图例用于提供一定的辅助信息,方便用户理解图形。在使用matplotlib绘图时,为绘制的图形设置标签并调用legend函数即可显示图例。本节中重点介绍设置图例显示公式以及设置图例位置、颜色等属性的方法。
例15-12 设置图例显示公式。
基本思路:在使用plot函数绘图时,在图形的标签文本字符串前后加上$符号将会使用内嵌的LaTex引擎将其显示为公式。
例15-13 设置图例位置、背景颜色、边框颜色等属性。
基本思路:调用pyplot的legend函数显示图例时,可以通过为legend函数传递参数来设置图例的字体、标题、位置、阴影、背景色、边框颜色以及显示列数等属性,定制个性化图例。
本书配套资源请移步百度云盘下载
链接:
推荐阅读
《Python程序设计基础与应用》
作者:董付国
知名Python教育者董付国老师新作,
言简意赅,案例丰富,
配套资源超全(包括教学PPT、源码、大纲、教案、习题答案),部分内容全彩呈现。
本书全部代码适用于Python 3.5、Python 3.6以及更高版本。
学用Python,有这一本就够了!
全国喝酒图鉴
什么是横断山?
褚时健:活着是为了什么?
大江大河40年:改变命运的七次机遇
心情不好时,看这3张图,瞬间豁然开朗