2017-06-25 15 views
0

coloumnの値に基づいてグループ化されたデータに対して、pandasデータフレームからマルチライングラフを作成したいと考えています。ここでのデータは、私が同じ画像と異なる色として示さするグループになりたいながら、このコードは、10の異なるプロットを生成するAPIからPython Pandasマルチライングラフ

import pandas as pd 
import numpy as np 
import calendar 
import requests 
import json 

r = requests.get('http://data.unhcr.org/api/stats/mediterranean/monthly_arrivals_by_location.json') 
js = r.json() 
df = pd.DataFrame.from_records(js) 

dfTop10 = df[['location','value']].\ 
groupby(['location']).sum().sort_values(['value'], ascending=[0])[1:5].reset_index() 

grData = df[['year','month','location','value']].loc[df['location'].\ 
isin(dfTop10.location)].groupby(['location','year','month'])['value'].sum().reset_index() 

grData['time'] = pd.to_datetime(df.year*10000+df.month*100+1,format='%Y%m%d') 

grData= grData[['location','time','value']] 

grData.groupby('location').plot() 

あります。誰も助けることができますか?

+0

ですから、各都市の行をしたい:、グラフに凡例を追加し、各plt.plotlabel=パラメータを追加して、最後に凡例を作成するには

?ここで、x軸とy軸は時間と値ですか? – OldGeeksGuide

答えて

1

これはかなりではありませんが、私はそれがうまくいくと思う:

あなたがこれを行うことがその最後の行(groupbyライン)の代わりに:

from matplotlib import pyplot as plt 
plt.figure(figsize=(15,5)) 

for city in set(grData['location']): 
    df = grData[grData['location'] == city] 
    plt.plot(df['time'], df['value']) 

しかし、私はそこにあると確信していますそれを行うよりクールな方法。

. . . 
for city in set(grData['location']): 
    df = grData[grData['location'] == city] 
    plt.plot(df['time'], df['value'], label=city) 

plt.legend() 
+0

それは動作します、もう1つの質問場所の名前に基づいてラベルを追加するにはどうすればいいですか? –