更改matplotlib中箱线图的轮廓线和中线的颜色

moo*_*min 8 matplotlib python-3.x jupyter-notebook

我正在尝试使用 matplotlib 从 pandas 数据帧创建箱线图。

我能够获取箱线图并更改轮廓和中线的线宽,但我想将所有颜色更改为黑色。我尝试了 Pandas boxplot 中描述的几种方法:设置 box、median、mean 的颜色和属性以及Change the facecolor of boxplot in pandas

然而,他们都不适合我的情况。

有人可以解决这些问题吗?

这是我的代码:

版本:python 3.6.5

    import pandas as pd
    from pandas import DataFrame, Series
    import matplotlib.pyplot as plt

    df = pd.read_excel("training.xls")

    fig = plt.figure()
    ax = fig.add_subplot(111)

    boxprops = dict(color="black",linewidth=1.5)
    medianprops = dict(color="black",linewidth=1.5)


    df.boxplot(column=["MEAN"],by="SrcID_Feat",ax=ax,
              boxprops=boxprops,medianprops=medianprops)

    plt.grid(False)
Run Code Online (Sandbox Code Playgroud)

结果

截屏

Pol*_*ear 8

这是解决您问题的一种方法(省略与问题无关的细节):

fig, ax = plt.subplots()
box_plot = ax.boxplot(..., patch_artist=True)
for median in box_plot['medians']:
    median.set_color('black')
Run Code Online (Sandbox Code Playgroud)

median是 matplotlib.lines.Line2D 类型的对象,它公开了set_color可用于设置每个框的颜色的方法。


小智 4

我发现除非添加参数patch_artist=True,否则所有 boxprops 字典都不会对箱线图产生任何影响。例如,当我生成一个箱线图并将面色更改为黄色时,我必须使用以下编码:

plt.boxplot(boxplot_data, positions=[1], patch_artist=True, boxprops=dict(facecolor='yellow'), showmeans=True)
Run Code Online (Sandbox Code Playgroud)