2016-07-13 7 views
2

Ich habe eine seaborn Handlung, die ich mit Farben zu annotieren will (vorzugsweise mit einer Legende und Entsprechung der Farbzuordnung). Ich sehe, dass die regplot eine color Methode hat. Ich weiß nicht, wie ich davon Gebrauch machen soll.zuordnen/Kartenfarben auf die Punkte in Seaborn.regplot (Python 3)

Ich habe meine ein paar verschiedene Möglichkeiten versucht, indem ich entweder die color Methode ein Wörterbuch, das die {index : color} abbildet und sogar die Farbwerte zum Datenrahmen selbst hinzugefügt.

Wie kann ich die Punkte mit den Farben zuordnen, die ich zugewiesen habe?

np.random.seed(0) 

# Create dataframe 
DF_0 = pd.DataFrame(np.random.random((100,2)), columns=["x","y"]) 

# Label to colors 
D_idx_color = {**dict(zip(range(0,25), ["#91FF61"]*25)), 
       **dict(zip(range(25,50), ["#BA61FF"]*25)), 
       **dict(zip(range(50,75), ["#91FF61"]*25)), 
       **dict(zip(range(75,100), ["#BA61FF"]*25))} 
DF_0["color"] = pd.Series(list(D_idx_color.values()), index=list(D_idx_color.keys())) 

# Plot 
sns.regplot(data=DF_0, x="x", y="y") #works, plot below 

# sns.regplot(data=DF_0, x="x", y="y", color="color") # doesn't work 
# ValueError: to_rgb: Invalid rgb arg "color" 
# could not convert string to float: 'color' 

# sns.regplot(data=DF_0, x="x", y="y", color=DF_0["color"]) # doesn't work 
# ValueError: to_rgb: Invalid rgb arg "('#91FF61', '#91FF61', ... 

# sns.regplot(data=DF_0, x="x", y="y", color=D_idx_color) # doesn't work 
# ValueError: to_rgb: Invalid rgb arg "(0, 1, 2, ... 

enter image description here

+0

Haben Sie einige dieser Punkte in verschiedenen Farben overplot wollen, und dann eine Legende für die Farben? – cphlewis

Antwort

3

Verwendung scatter_kws:

import pandas as pd 
import numpy as np 
import matplotlib.pylab as plt 
import seaborn as sns 

np.random.seed(0) 

# Create dataframe 
DF_0 = pd.DataFrame(np.random.random((100,2)), columns=["x","y"]) 
DF_0['color'] = ["#91FF61"]*25 + ["#BA61FF"]*25 + ["#91FF61"]*25 + ["#BA61FF"]*25 
#print DF_0 

sns.regplot(data=DF_0, x="x", y="y", scatter_kws={'c':DF_0['color']}) 
plt.show() 

enter image description here

Verwandte Themen