2017-07-26 21 views
-1

I以下はGROUPBYパンダのプロットでオーダーをしてください

univ date   ms  cs 
C 11/01/1977  0.2  0.1 
C 11/02/1977  0.3  0.4 
B 11/01/1977  0.6  -0.1 
B 11/02/1977  0.55 -0.5 
A 11/01/1977  0.23 0.2 
A 11/02/1977  0.12 0.15 
etc 

これがどのように見えるデータフレームは、私は現在、これは0からに制限して、3つの散布図を生成

fig, axes = plt.subplots(1, 3, figsize=(15, 5)) 

for (universe, group), ax in zip(df.groupby([df.univ]), axes.flatten()): 
    group.plot(x='ms', y='cs', kind='scatter', ax=ax, title=universe) 
    ax.set_xlim(0, 1) 
    ax.set_ylim(0, 1) 

持っているものである必要があり1. 私がしたいのは、A、B、Cの順番になるように、C、B、Aというタイトルのプロットの順番を保つことです。

ありがとうございました!

+0

インデントを修正してください – jacoblaw

+0

「[散布図の線を上書きするにはどうすればいいですか?]」(https://stackoverflow.com/questions/19068862/how-to-overplot-a-line-on-a) -scatter-plot-in-python) –

答えて

2

問題はgroupbyであり、デフォルトでソートされた順序で項目を返します。フラグsort=Falseを設定するだけです。

for (universe, group), ax in zip(df.groupby([df.univ], sort=False), axes.flatten()): 
    group.plot(x='ms', y='cs', kind='scatter', ax=ax, title=universe) 
    ax.set_xlim(0, 1) 
    ax.set_ylim(0, 1) 

また、希望の順序で返すこともできます。

gb = df.groupby('univ') 
desired_order = ('B', 'A', 'C') 
for (universe, group), ax in zip(((u, gb.get_group(u)) for u in desired_order), 
           axes.flatten()): 
    ... 

そして、投稿ごとに1つの質問のみが必要です。

関連する問題