2017-08-18 1 views
1

Ich versuche, eine scatter Handlung in pandas mit seaborn Paket zu plotten. Ich möchte, dass beide Variablen in der Legende angezeigt werden, aber ich bekomme nur eine. Es folgt ein, was ich tat:Scatter Plot Legende zeigt nur eine Variable mit Farbe -Pandas Seaborn

import pandas as pd 
import numpy as np 
from matplotlib import pyplot as plt 
import seaborn as sns 

df = pd.DataFrame(np.random.randn(100, 6), columns=['a', 'b', 'c', 'd', 'e', 'f']) 

ich so aufgetragen,

plt.scatter(df['a'],df['b'], color = ['red', 'blue']) 
plt.legend(loc = 'best') 
plt.show() 

Ich erhalte Bild wie dieses, enter image description here

Wie Sie sehen können, sehe ich nicht a Spalte/Objekt mit blauer Farbe. Welchen Fehler mache ich hier? Ich habe danach gesucht, kein Glück. Jeder Vorschlag wäre willkommen.

+2

Sie Plotten Punkte mit '(x, y)' Koordinaten, wo 'x = df [ 'a']' und 'y = df [ 'b']' - ist das, was Sie wollen? – MaxU

+0

@MaxU ja, das ist was ich will. Ich möchte, dass die Legende "a" in blauer Farbe und "b" in roter Farbe zeigt oder umgekehrt –

+2

die x-Koordinate ist a und die y-Koordinate ist b, also ist deine Legende korrekt. – mauve

Antwort

2

UPDATE:

plt.scatter(df.index, df.a, color='red') 
plt.scatter(df.index, df.b, color='blue') 
plt.legend(loc = 'best') 

Ergebnis:

enter image description here


Ich glaube, Sie sind verwirrt.

Demo:

Stellen Sie sich vor Sie haben nur drei Zeilen in Ihrer DF:

In [53]: df = pd.DataFrame({'x':[1,2,3], 'y':[5,6,7]}) 

In [55]: df 
Out[55]: 
    x y 
0 1 5 
1 2 6 
2 3 7 

Sie versuchen, die folgenden drei Punkte zu zeichnen - welche Art von Legende erwarten Sie?

In [54]: plt.scatter(df.x, df.y, color=['red','blue']) 
Out[54]: <matplotlib.collections.PathCollection at 0x149f9f28> 

In [56]: plt.legend(loc = 'best') 
Out[56]: <matplotlib.legend.Legend at 0x1353ca20> 

enter image description here

+0

danke für Ihre Bemühungen zu klären, das Update ist das, was ich gesucht habe. –

+0

@ i.n.n.m, froh, dass ich helfen könnte :) – MaxU

Verwandte Themen