I\'m running Pandas 0.16.2 and Matplotlib 1.4.3. I have this issue coloring the median of the boxplot generated by the following code:
df = pd.DataFrame(np.rando
Actually the following workaround works well, returning a dict
from the boxplot command:
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
fig, ax = plt.subplots()
bp = df.boxplot(return_type='dict')
and then assign directly colors and linewidth to the medians with:
[[item.set_color('r') for item in bp[key]['medians']] for key in bp.keys()]
[[item.set_linewidth(0.8) for item in bp[key]['medians']] for key in bp.keys()]
Looking at the code for DataFrame.boxplot()
there is some special code to handle the colors of the different elements that supersedes the kws
passed to matplotlib's boxplot
. In theory, there seem to be a way to pass a color=
argument containing a dictionary with keys being 'boxes', 'whiskers', 'medians', 'caps'
but I can't seem to get it to work when calling boxplot()
directly.
However, this seem to work:
df.plot(kind='box', color={'medians': 'blue'},
medianprops={'linestyle': '--', 'linewidth': 5})
see Pandas Boxplot Examples