2015-03-24 6 views
20

dataframe Ben sonuçta iki satır, bir mavi, bir kırmızı istiyorum aşağıdakiçizdirme birden çok satır

color x y 
0 red 0 0 
1 red 1 1 
2 red 2 2 
3 red 3 3 
4 red 4 4 
5 red 5 5 
6 red 6 6 
7 red 7 7 
8 red 8 8 
9 red 9 9 
10 blue 0 0 
11 blue 1 1 
12 blue 2 4 
13 blue 3 9 
14 blue 4 16 
15 blue 5 25 
16 blue 6 36 
17 blue 7 49 
18 blue 8 64 
19 blue 9 81 

gibi görünen bir dataframe var. kırmızı çizgi, esasen y = x olmalı ve mavi çizgi y olmalıdır = x^2

aşağıdaki ne zaman:

:

df.plot(x='x', y='y') 

çıkışı bu

Pandaların iki takım olduğunu bilmelerini sağlamanın bir yolu var mı? Ve buna göre gruplandırın.

for key, grp in df.groupby(['color']): 

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.read_table('data', sep='\s+') 
fig, ax = plt.subplots() 

for key, grp in df.groupby(['color']): 
    ax = grp.plot(ax=ax, kind='line', x='x', y='y', c=key, label=key) 

plt.legend(loc='best') 
plt.show() 

: Ben

cevap

32

Sen rengine göre alt DataFrame bölmek için groupby kullanabilirsiniz set farklılaştırıcı sütun 'renk' belirtmek edebilmek istiyorum Bu kodu kullanabilirsiniz enter image description here

+0

'ax = grp.plot (ax = ax tür = 'satır', X = x ', y =' y grafik çizmek ', c = anahtar, etiket = anahtar)' 'etiketini kwarg eklemek daha sonra efsaneyi manipüle etmenizi sağlar. – ErnestScribbler

+0

@ErnestScribbler: İyileştirdiğiniz için teşekkürler! – unutbu

-3

verimleri sizin arzu çıktı almak için

import pandas as pd 
import matplotlib.pyplot as plt 
df = pd.DataFrame({'color': ['red','red','red','blue','blue','blue'], 'x': [0,1,2,3,4,5],'y': [0,1,2,9,16,25]}) 
print df 

    color x y 
0 red 0 0 
1 red 1 1 
2 red 2 2 
3 blue 3 9 
4 blue 4 16 
5 blue 5 25 

a = df.iloc[[i for i in xrange(0,len(df)) if df['x'][i]==df['y'][i]]].plot(x='x',y='y',color = 'red') 
df.iloc[[i for i in xrange(0,len(df)) if df['y'][i]== df['x'][i]**2]].plot(x='x',y='y',color = 'blue',ax=a) 

plt.show() 

Çıkış The output result will look like this