考虑以下示例数据框:
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)
我正在寻找一种惯用的方法来分散绘图,如下所示:
(A, B, C, or D)
我可以通过一堆过滤和for循环来做到这一点,但我正在寻找一种更紧凑的熊猫般的方式。
答案 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()