Issue
I am trying to draw multiple black-and-white boxplots using Python's Seaborn package. By default the plots are using a color palette. I would like to draw them in solid black outline. The best I can come up with is:
# 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()
Which produces something like:
I would like the box outlines to be black without any fill or changes in the color palette.
Solution
You have to set edgecolor
of every boxes and the use set_color
for six lines (whiskers and median) associated with every box:
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')
If last cycle is applied for all artists and lines then it may be reduced to:
plt.setp(ax.artists, edgecolor = 'k', facecolor='w')
plt.setp(ax.lines, color='k')
where ax
according to boxplot
.
If you also need to set fliers' color follow this answer.
Answered By - Serenity
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.