【问题标题】:How to use NaN values as a hue with a defined color in seaborn barplot如何在seaborn barplot中使用NaN值作为具有定义颜色的色调
【发布时间】:2021-03-04 09:43:28
【问题描述】:

假设我有一个类似于下图中的 DataFrame (df),但 Score 列中缺少值:

我想绘制一个水平的 seaborn 条形图,Pvalue 在 x 轴上,条形的颜色对应于 Score。即使我定义了一个颜色图并告诉它将 NaN 显示为黑条,它们也根本不会显示。

import seaborn as sns
from matplotlib import cm

bwrNan = copy(cm.get_cmap('bwr'))
bwrNan.set_bad('black')
cm.register_cmap("mycmap", bwrNan)
sns.barplot(data=df, x='Pvalue', y='Labels', hue='Score', palette='mycmap', linewidth=2, edgecolor='k', dodge=False)

另一方面,如果我尝试在 seaborn 热图中使用相同的数据,我会得到正确的颜色:

sns.heatmap(data=df[['Score']], cmap='mycmap')

【问题讨论】:

    标签: python pandas seaborn bar-chart nan


    【解决方案1】:

    快速for 循环怎么样:

    for i,r in df.iterrows():
        color = 'k' if np.isnan(r['Score']) else bwrNan(r['Score'])
        plt.barh(r['Labels'],r['Pvalue'], color=color, edgecolor='k', alpha=0.6)
    

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 2021-07-06
      • 2014-11-03
      • 2020-02-04
      • 2020-06-27
      相关资源
      最近更新 更多