摘自《利用python进行数据分析》——Wes McKinney
在pandas中,我们有行标签、列标签以及分组信息(可能有)。也就是说,要制作一张完整的图表,原本需要一大堆的matplotlib代码,现在只需一两条简洁的语句就可以了。pandas有许多能够利用DataFrame对象数据组织特点来创建标准图标的高级绘图方法(这些函数的数量还在不断增加1)。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
s = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10))
s.plot()
plt.show()
pandas的大部分绘图方法都有一个可选的ax参数,它可以是一个matplotlib的subplot对象。这是你能够在网络布局中更为灵活地处理subplot的位置。DataFrame的plot方法会在一个subplot中为各列绘制一条线,并自动创建图例
df = pd.DataFrame(np.random.randn(10, 4).cumsum(0), columns=list('ABCD'), index=np.arange(0, 100, 10))
df.plot()
plt.show()
Series.plot方法的函数:
参数 | 说明 |
---|---|
label | 用于图例的标签 |
ax | 要在其上进行绘制的matplotlib subplot对象。如果没有设置,则使用当前matplotlib subplot |
style | 将要传给matplotlib的风格字符串(for example: ‘ko–’) |
alpha | 图表的填充不透明(0-1) |
kind | 可以是’line’, ‘bar’, ‘barh’, ‘kde’ |
logy | 在Y轴上使用对数标尺 |
use_index | 将对象的索引用作刻度标签 |
rot | 旋转刻度标签(0-360) |
xticks | 用作X轴刻度的值 |
yticks | 用作Y轴刻度的值 |
xlim | X轴的界限 |
ylim | Y轴的界限 |
grid | 显示轴网格线 |
DataFrame还有一些用于对列进行灵活处理的选项,例如,要将所有列都绘制到一个subplot中还是创建各自的subplot。参数如下表:
参数 | 说明 |
---|---|
subplots | 将各个DataFrame列绘制到单独的subplot中 |
sharex | 如果subplots=True,则共用同一个X轴,包括刻度和界限 |
sharey | 类似于上 |
figsize | 表示图像大小的元组 |
title | 表示图像标题的字符串 |
legend | 添加一个subplot图例(默认为True) |
sort_columns | 以字母表顺序绘制各列,默认使用前列顺序 |
fig, axes = plt.subplots(2, 1)
data = pd.Series(np.random.randn(16), index=list('abcdefghijklmnop'))
data.plot(kind='bar', ax=axes[0], color='k', alpha=0.7)
data.plot(kind='barh', ax=axes[1], color='k', alpha=0.7)
plt.show()
对于DataFrame, 柱形图会将每一行的值分为一组。DataFrame的各列名称都被用作了图例的标题。设置stacked=True
即可为DataFrame生成堆积柱形图,这样每行的值就会被堆积在一起。df.plot(kind='barh', stacked=True, alpha=0.5)
直方图(histogram)是一种可以对值频率进行离散化显示的柱状图。数据点被拆分到离散的、间隔均匀的面元中,绘制的是各面元中数据点的数量。Series.hist()
。在之后调用plot
时加上参数kind='kde'
即可生成一张密度图。
散布图(scatter plot)是观察两个一维数据序列之间的关系的有效手段。matplotlib的scatter
方法是绘制散布图的主要方法。利用plt.scatter()
即可轻松绘制一张简单的直方图。而且,pandas提供了下一个能从DataFrame创建散步图矩阵的scatter_matrix
函数。它还支持在对角线上放置个变量的直方图或密度图。
很多时候,我们想用方便的集成的绘图方式,比如df.plot()
,但是,我们又想加上matplotlib的很多操作来增强图片的表现力,该怎么办。
关键就是通过坐标系ax在两种作图方式之间建立联系