Python 如何使用NaN值作为seaborn barplot中定义颜色的色调
假设我有一个类似于下图的数据帧(Python 如何使用NaN值作为seaborn barplot中定义颜色的色调,python,pandas,seaborn,bar-chart,nan,Python,Pandas,Seaborn,Bar Chart,Nan,假设我有一个类似于下图的数据帧(df),分数列中缺少值: 我想绘制一个水平seaborn条形图,x轴上有Pvalue,条形图的颜色对应于分数。即使我定义了一个颜色映射并告诉它以黑色条的形式显示NaN,它们也不会显示出来 导入seaborn作为sns 从matplotlib导入cm bwrNan=复制(cm.get_cmap('bwr')) bwrNan.set_bad(“黑色”) cm.注册cmap(“mycmap”,bwrNan) sns.barplot(data=df,x='Pvalue
df
),分数列中缺少值:
我想绘制一个水平seaborn条形图,x轴上有Pvalue,条形图的颜色对应于分数。即使我定义了一个颜色映射并告诉它以黑色条的形式显示NaN,它们也不会显示出来
导入seaborn作为sns
从matplotlib导入cm
bwrNan=复制(cm.get_cmap('bwr'))
bwrNan.set_bad(“黑色”)
cm.注册cmap(“mycmap”,bwrNan)
sns.barplot(data=df,x='Pvalue',y='Labels',hue='Score',palete='mycmap',linewidth=2,edgecolor='k',dodge=False)
另一方面,如果我尝试在海生热图中使用相同的数据,我会得到正确的颜色:
sns.heatmap(数据=df['Score']],cmap='mycmap')
快速执行
循环如何:
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)
输出:
快速执行循环如何:
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)
输出: