How to change the linestyle of whiskers in pandas boxplots?

knut_h picture knut_h · Sep 14, 2017 · Viewed 9.9k times · Source

Is there a way to change the linestyle of the whiskers in pandas boxplots to '-'? Default seems to be '--'.

I have tried:

color = dict(boxes='black', whiskers='black', medians='red', caps='black')
styles=dict(whiskers='-')
bp = df.plot.box(color=color, style=styles)

However, while the colors turn out the way I want, the style input does not seem to affect the plot at all.

Here is an example. I always get dashed lines for my whiskers, but would like solid lines.

I have also tried

boxprops = dict(linewidth=1.0, color='black')
whiskerprops = dict(linestyle='-',linewidth=1.0, color='black')
plt.figure()
df.boxplot(boxprops=boxprops, whiskerprops=whiskerprops)

Here, df.boxplot does not take the inputs at all.

This is closely related to Pandas boxplot: set color and properties for box, median, mean

Answer

knut_h picture knut_h · Sep 15, 2017

Ted Petrou's commments helped:

Put the whiskerprops = dict() directly in to the df.plot.box line:

color = dict(boxes='black', whiskers='black', medians='red', caps='black')
bp = df.plot.box(color=color,whiskerprops = dict(linestyle='-',linewidth=1.0
, color='black'))

As for df.boxplot(), there seems to be a problem with byarguments. Including whiskerprops and boxprops directly into the argument, here, helped as well. However I could still not change the boxes' color! It remains to be the default blue. The following code yields solid-line, black whiskers, however the boxes are blue. Linewidth of boxes can be changed tho!

plt.figure()
df.boxplot(boxprops= dict(linewidth=1.0, color='black')
, whiskerprops=dict(linestyle='-',linewidth=1.0, color='black'))

If anyone can help with changing boxes colors in df.boxplot(), please do comment. From the pandas documentation I get, that people should rather use df.plot.box anyways tho.