2017-04-16 6 views
4

Ich versuche, mehrere Schwarz-Weiß-Boxplots mit Python Seaborn-Paket zu zeichnen. Standardmäßig verwenden die Diagramme eine Farbpalette. Ich möchte sie in einem soliden schwarzen Umriss zeichnen. Das Beste, was ich mit oben kommen kann ist:Schwarz-Weiß-Boxplots in Seaborn

# figure styles 
sns.set_style('white') 
sns.set_context('paper', font_scale=2) 
plt.figure(figsize=(3, 5)) 
sns.set_style('ticks', {'axes.edgecolor': '0', 
         'xtick.color': '0', 
         'ytick.color': '0'}) 

ax = sns.boxplot(x="test1", y="test2", data=dataset, color='white', width=.5) 
sns.despine(offset=5, trim=True) 
sns.plt.show() 

die so etwas wie produziert:

enter image description here

Ich würde die Box wie skizziert ohne Füllung oder Änderungen in der Farbpalette, schwarz zu sein.

Antwort

4

Sie haben edgecolor die einzelnen Boxen zu setzen und die Verwendung set_color für sechs Linien (Whisker und Median) mit jeder Box verbunden:

ax = sns.boxplot(x="day", y="total_bill", data=tips, color='white', width=.5, fliersize=0) 

# iterate over boxes 
for i,box in enumerate(ax.artists): 
    box.set_edgecolor('black') 
    box.set_facecolor('white') 

    # iterate over whiskers and median lines 
    for j in range(6*i,6*(i+1)): 
     ax.lines[j].set_color('black') 

Wenn im letzten Zyklus für alle Künstler und Leitungen angelegt wird, dann kann es sein,

plt.setp(ax.artists, edgecolor = 'k', facecolor='w') 
plt.setp(ax.lines, color='k') 

wo ax nach boxplot: zu reduziert.

enter image description here

Wenn Sie müssen auch Farbe dieses answer folgen Flieger gesetzt.

+1

Wenn Sie wirklich minimalistisch werden wollen, können Sie 'showbox = False' machen. – mwaskom