2017-06-09 5 views
1

ich Python bin mit einem Pandas DataframeLegen Sie die Farbe für die Punktwolke mit DataFrame.plot

ich die Farbe wie folgt auf Parzelle zum Plotten:

allDf = pd.DataFrame({ 
    'x':[0,1,2,4,7,6], 
    'y':[0,3,2,4,5,7], 
    'a':[1,1,1,0,0,0], 
    'c':['red','green','blue','red','green','blue'] 
},index = ['p1','p2','p3','p4','p5','p6']) 

allDf.plot(kind='scatter',x='x',y='y',c='c') 
plt.show() 

aber es funktioniert nicht (jeder Punkt hat eine blaue Farbe)

Wenn ich die Definition von Datenrahmen wie diese

geändert
'c':[1,2,1,2,1,2] 

I t erscheint Farbe, sondern nur schwarz und weiß, möchte ich blau, rot und mehr verwenden ...

Antwort

2

Ersetzen Sie ihn durch:

allDf.plot(kind='scatter',x='x',y='y',c=allDf.c) 

Ausgang:

enter image description here

+0

Vielen Dank, es funktioniert gut, aber ich dachte, ich sollte den Namen der Zeilen übergeben als argumens plot(). wie 'x' und 'y'. Warum nicht wie allDf.plot (kind = 'streuen', x = allDf.x, y = alleDf.y, c = allDf.c) – whitebear

+0

Das ['DataFrame.plot'] (https://pandas.pydata.org /pandas-docs/stable/generated/pandas.DataFrame.plot.html) erläutert, welche Art von Argumenten erlaubt sind. Für 'x' und' y' ist es "label oder position" für die meisten anderen Parameter, es wird einfach an "matplotlib" übergeben (Sie können sie also nicht mit "label or position" angeben). – MSeifert

+0

Es ist ein verständlicher Fehler, alles kommt mit der Praxis. : D Wie MSeifert unten sagte, bitten Sie ihn, die Farbe 'c' zu verwenden: cyan:) – Tbaki

0

The c Argument von pandas.DataFrame.plot wird in diesem Fall durch wörtlich übergeben, so wird alles die Farbe 'c' (cyan) haben.

Sie benötigen eine Spalte direkt weitergeben müssen:

allDf.plot(kind='scatter', x='x', y='y', c=allDf['c']) 

enter image description here

Es ist ein bisschen seltsam und nicht gut dokumentiert, wenn die c Parameter werden die Spalte verwenden und wenn es den Literalwert verwenden. In diesem Fall ist es wahrscheinlich am besten, die "Farben" explizit anzugeben. Vielleicht möchten Sie einen Blick auf die source code werfen, falls Sie daran interessiert sind zu debuggen, was dort passiert.

+0

Ich denke, das c steht für Cyan. : D – Tbaki

+0

Sieht "hellblau" zu mir: D Aber du hast Recht. :) – MSeifert

Verwandte Themen