Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用NaN值作为seaborn barplot中定义颜色的色调_Python_Pandas_Seaborn_Bar Chart_Nan - Fatal编程技术网

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)
输出: