2017-03-26 7 views
1

マルチタイルマルチシリーズの散布図を作成するために、パンダを使用して:次のサンプル・データ・フレームを考えてみましょう

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. 各Dシリーズは、独自の色でプロットし、各カテゴリに対して1つ

私はフィルタリングとfor-loopsの束でこれを行うことができますが、私はよりコンパクトなパンダのような方法を探しています。

+0

あなたはそれが見えるようにしたいかを理解するための基準長いコードを追加することができますか? – Marat

+0

x軸とは何ですか?日付インデックス? – piRSquared

答えて

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

+0

はい、これは私が望む結果ですが、ネストされたfor-loopsとフィルタリング(私の質問で言及したように)で持っているコードと非常によく似ています。これはパンダと一緒に行くことができる最もミニマルなものですか?複数のタイルに 'by'引数を'プロット 'できますか?系列を列として認識させることはできますか? –

関連する問題