使用pandas创建多图块多系列散点图

时间:2017-03-26 00:43:33

标签: python pandas plot scatter tiling

考虑以下示例数据框:

rng = pd.date_range('1/1/2011', periods=72, freq='H')
df = pd.DataFrame({
        'cat': list('ABCD'*int(len(rng)/4)),
        'D1': np.random.randn(72),
        'D2': np.random.randn(72),
        'D3': np.random.randn(72),
        'D4': np.random.randn(72)
    }, index=rng)

我正在寻找一种惯用的方法来分散绘图,如下所示:

  1. 4个子图(图块),每个类别(A, B, C, or D)
  2. 一个
  3. 每个D系列都以自己的颜色绘制
  4. 我可以通过一堆过滤和for循环来做到这一点,但我正在寻找一种更紧凑的熊猫般的方式。

1 个答案:

答案 0 :(得分:1)

这是我对你想要的猜测。

fig, axes = plt.subplots(2, 2, figsize=(8, 6), sharex=True, sharey=True)

for i, (cat, g) in enumerate(df.groupby('cat')):
    ax = axes[i // 2, i % 2]
    for j, c in g.filter(like='D').iteritems():
        c.plot(ax=ax, title=cat, label=j, style='o')
    ax.legend(loc='best', fontsize=8)

fig.tight_layout()

enter image description here