2016-11-30 3 views
1

Ich möchte verschiedene Farben für Ausreißer in einem Boxplot basierend auf Kategorien festlegen.Pandas: Verschiedene Farben für Flyer in einem Boxplot setzen

f = plt.figure() 
ax = f.add_subplot(111) 
df = pd.DataFrame({"X":[-100,-10,0,0,0,10,100], 
        "Category":["A","A","A","A","B","B","B",]}) 
bp = df.boxplot("X", return_type="dict", ax=ax, grid=False) 
ax.set_ylim(-110,110) 
plt.text(1,90,"this flier red",ha='center',va='center') 
plt.text(1,-90,"this flier blue",ha='center',va='center') 

Different flier colors in boxplot

Wie kann ich geben die Flieger (Kreuze über und unter den Kappen) verschiedene Farben?

Ich weiß, dass ich verschiedene Farben für die Schnurrhaare von

bp["whiskers"][0].set_color("b") 
bp["whiskers"][1].set_color("r") 

und es macht Sinn festlegen, dass bp["whiskers"] eine Liste von 2 Line-Objekten zurückgibt (eine für die Top-Whisker und eine für die untere). Aber für bp["fliers"] ich nur ein Listenelement erhalten (bp["fliers"].set_color("r") nicht einmal etwas tun.

Danke für die Hilfe.

Max

Antwort

2

Okay, das ist eine Lösung. bp["fliers"].get_data() gibt ein Tupel mit der xy-Werte. Dann muss man nur über plotten

ax.plot([1],[bp["fliers"][0].get_data()[1][0]], 'b+') 
ax.plot([1],[bp["fliers"][0].get_data()[1][1]], 'r+') 

enter image description here

Verwandte Themen