咱们在上一篇介绍了 pandas,本篇介绍 matplotlib。编程
一个用于建立出版质量图表的桌面绘图包。segmentfault
Figure 和 Subplot数组
matplotlib
的图像都位于Figure
对象中。函数
带有三个subplot
的Figure
:布局
这些由fig.add_subplot
所返回的对象是AxesSubplot
对象,直接调用它们的实例方法就能够在其它空着的格子里画图了。spa
这时发出一条绘图命令,matplotlib
就会在最后一个用过的subplot
上进行绘制(若是没有会建立一个):.net
K--
:一个线型选项,用于告诉matplotlib
绘制黑色虚线图。3d
依次画出虚线、直方图、散点图。code
根据特定布局建立Figure
和subplot
的简便方法:plt.subplots
, 它能够建立一个新的Figure
,并返回一个含有已建立的subplot
对象的NumPy
数组:对象
能够对 axes
数组进行索引,就像是一个二维数组同样:
还能够经过sharex
和sharey
指定subplot
应该具备相同的X
轴或Y
轴(刻度),在比较相同范围的数据时用,不然matplotlib
会自动缩放各图表的界限。
调整subplot周围的间距
默认状况下,matplotlib
会在subplot
外围留下必定的边距,在subplot
之间留下必定的间距。间距跟图像的高度和宽度有关。
利用Figure
的subplots_adjust
方法修改间距。
下面的例子间距收缩到 0:
轴标签重叠了,matplotlib
不会检查标签是否重叠,这时要本身设定刻度位置和刻度标签。
能够在matplotlib
的文档中找到各类图表类型。
颜色、标记和线型
完整的linestyle
列表参见plot
的文档。
ax.plot(x, y, 'g--') #根据x, y绘制绿色虚线 ax.plot(x, y, linestyle='--', color='g') #更明确的方式,和上面同样的效果
要使用其余任意颜色能够经过指定其 RGB 值的形式(如 #CECECE)
matplotlib
建立的是连续的线型图,即点与点之间插值,非实际数据点默认是按线性方式插值的,能够经过drawstyle
选项修改:
线型图能够加上一些标记,以强调实际的数据点:
标记类型和线型必须放在颜色后面。
简化的写法:
刻度、标签和图例
交互式使用,有xlim
, xticks
, xticklabels
之类的方法,它们分别控制图表的范围,刻度位置,刻度标签等。
调用时不带参数,如plt.xlim()
返回当前的X
轴绘图范围。
调用时带参数,如plt.xlim([0, 10])
会将X
轴的范围设置为 0 到 10。
matplotlib API
。设置标题、轴标签、刻度以及刻度标签
绘制一段随机漫步:
修改X
轴刻度:set_xticks
(数值),set_xticklabels
(其余任何的值用做刻度)。
添加图例(legend)
添加图例的方式:添加subplot
的时候传入label
参数。
调用 ax.legend()
或 plt.legend()
来自动建立图例。
loc
告诉matplotlib
要将图例放在哪,best
选择最不碍事的位置。
去除图例:不传入label
或传入label='_nolegend_'
(注意有两个下划线)。
注释以及在Subplot上绘图
注释:经过 text
, arrow
, annotate
等函数进行添加。
matplotlib
有一些表示常见图形的对象:称为块(patch),完整的集合位于matplotlib.patches
。
建立一个块对象shp
,而后经过ax.add_patch(shp)
将其添加到subplot
中:
图表对象:它们其实就是由块组装而成的。
将图表保存到文件
利用 plt.savefig
能够将当前图表保存到文件。(该方法至关于 Figure 对象的实例方法 savefig)。
如要将图表保存为 SVG 文件:
两个重要的选项:
dpi
:控制“每英寸点数”分辨率;bbox_inches
:能够剪除当前图表周围的空白部分。获得一张带有最小白边且分辨率为 400DPI 的 PNG 图片:
savefig
并不是必定要写入磁盘,也可写入任何文件型的对象,好比StringIO
:
matplotlib配置
操做matplotlib
配置系统的方式:Python 编程方式,即利用rc
方法。
如将全局的图像默认大小设置为 10 * 10,执行:
plt.rc('figure', figsize=(10, 10))
rc
的第一个参数:是但愿自定义的对象(如'figure', 'axes', 'xtick', 'ytick', 'grid', 'legend'),这里是figure
。
能够跟一系列的关键字参数,将它们写成一个字典:
所有的自定义选项:查阅matplotlib
的配置文件matplotlibrc
(位于 matplotlib/mpl-data 目录中)。对该文件进行自定义,并将其放在目录中,则每次使用matplotlib
时就会加载该文件。
在pandas
中,有行标签、列标签、分组信息。
要制做一张完整的图表,本来须要一大堆的matplotlib
代码,如今只需一两条简洁的语句就能够了。pandas
有许多可以利用DataFrame
对象数据组织特色来建立标准图表的高级绘图方法。
线型图
Series
和DataFrame
都有一个用于生成各种图表的plot
方法,默认状况下它们都生成线型图。
DataFrame
的plot
方法会在一个 subplot
中为各列绘制一条线,并自动建立图例。
柱状图
垂直柱状图:Kind='bar'
水平柱状图:Kind='barh'
设置 stacked=True
便可为DataFrame
生成堆积柱状图:
柱状图利用value_counts
图形化显示Series
中各值的出现频率,如:
直方图和密度图
直方图(histogram):是一种能够对值频率进行离散化显示的柱状图。
密度图:经过计算“可能会产生观测数据的连续几率分布的估计”而产生的。
通常的过程是将该分布近似为一组核(如正态(高斯)分布之类的较为简单的分布)。
密度图也被称做 KDE
图(Kernel Density Estimate 核密度估计)。
直方图和密度图常被画在一块儿,直方图以规格化形式给出(以便给出面元密度),再在其上绘制核密度估计。
由两个不一样的标准正态分布组成的双峰分布:
最后一行代码绘制的密度图的最终结果:
散布图
散布图(scatter plot):是观察两个一维数据序列之间关系的有效手段。
matplotlib
的scatter
方法是绘制散布图的主要方法。
在探索式数据分析工做中,同时观察一组变量的散布图是颇有意义的。也被称为散布图矩阵(scatter plot matrix)。
pandas
提供了一个能从DataFrame
建立散布图矩阵的 scatter_matrix
函数,它还支持在对角线上放置各变量的直方图或密度图。
不足之处,欢迎指正。