【问题标题】:Changing alpha values in pandas barplot to match variable更改 pandas barplot 中的 alpha 值以匹配变量
【发布时间】:2014-05-18 06:58:24
【问题描述】:

我有一个 DataFrame,其中包含多个统计模型的不同估计值和 p 值作为列。

df = pd.DataFrame({'m4_params':np.random.normal(size=3),
                   'm4_pvalues':np.random.random_sample(3),
                   'm5_params':np.random.normal(size=3),
                   'm5_pvalues':np.random.random_sample(3),
                   'm6_params':np.random.normal(size=3),
                   'm6_pvalues':np.random.random_sample(3)})

我可以通过转置和绘制为barh 将其转换为所需的条形图:

df[['m4_params','m5_params','m6_params']].T.plot(kind='barh')

但是,我还想通过使用alpha = 1 - pvalue 之类的简单函数根据其对应的 pvalue 更改每个条的 alpha 通道来更新这些条形图。

目标是使具有较高重要性级别的条形更强,而那些具有较弱重要性的条形更透明。据我所知,alpha 关键字只接受浮点数,这意味着我需要某种方式来访问图中每个条形的属性。

【问题讨论】:

    标签: matplotlib pandas bar-chart alpha


    【解决方案1】:

    这种方法可能很脆弱(用 pandas 0.11.0 测试过),但您可以遍历 axes.patches 列表。更可靠的方法是通过调用 plt.barh() 自己构建条形图。 (旁注:非常小的 alpha 是不可见的,所以我将最小 alpha 设置为 .2)

    from itertools import product
    
    ax = df[['m4_params','m5_params','m6_params']].T.plot(kind='barh')
    for i, (j, k) in enumerate(product(range(3), range(3))):
        patch = ax.patches[i]
        alpha = 1 - df[['m4_pvalues','m5_pvalues','m6_pvalues']].T.iloc[j, k]
        patch.set_alpha(max(alpha, .2))
    plt.draw()
    

    【讨论】:

    • 对我来说适用于 0.13!谢谢!
    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 2016-05-16
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2022-04-13
    • 1970-01-01
    相关资源
    最近更新 更多