【问题标题】:pandas - boxplot median color settings issuespandas - 箱线图中值颜色设置问题
【发布时间】:2015-09-10 12:38:46
【问题描述】:

我正在运行 Pandas 0.16.2 和 Matplotlib 1.4.3。我在为以下代码生成的箱线图的中位数着色时遇到了这个问题:

df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])

fig, ax = plt.subplots()

medianprops = dict(linestyle='-', linewidth=2, color='blue')

bp = df.boxplot(medianprops=medianprops)

plt.show()

返回:

似乎没有读取color 设置。仅更改线型和线宽的设置,绘图反应正确。

medianprops = dict(linestyle='-.', linewidth=5, color='blue')

任何人都可以复制它吗?

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    查看DataFrame.boxplot() 的代码,有一些特殊的代码可以处理不同元素的颜色,这些代码取代了传递给matplotlib 的boxplotkws。从理论上讲,似乎有一种方法可以传递一个 color= 参数,其中包含一个键为 'boxes', 'whiskers', 'medians', 'caps' 的字典,但在直接调用 boxplot() 时我似乎无法让它工作。

    但是,这似乎可行:

    df.plot(kind='box', color={'medians': 'blue'}, 
            medianprops={'linestyle': '--', 'linewidth': 5})
    

    Pandas Boxplot Examples

    【讨论】:

    • 谢谢,但为了我绘制多索引数据框的目的,我需要 boxplot 函数(带有 'by' 列)而不是 kind='box' 版本。
    • 其实用this回答就可以了!
    【解决方案2】:

    实际上,以下解决方法效果很好,从 boxplot 命令返回 dict

    df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
    
    fig, ax = plt.subplots()
    
    bp = df.boxplot(return_type='dict')
    

    然后直接将颜色和线宽分配给中位数:

    [[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()]
    

    【讨论】:

      猜你喜欢
      • 2020-10-06
      • 1970-01-01
      • 2013-12-28
      • 2021-07-01
      • 2013-12-06
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多