如何使用 np where python 设置条件颜色范围

How to set conditional color range using np where python

我的数据框如下所示:

print(file.head())

            miRNAs    baseMean  log2FoldChange          padj
0    hsa-miR-31-5p  221.442806       -7.037259  4.360127e-27
1   hsa-miR-337-5p   14.711123       -5.790422  4.556183e-01
2  hsa-miR-196b-5p  162.278255       -5.652917  1.365264e-3
3   hsa-miR-584-5p    6.430919       -5.554578  4.077578e-04
4  hsa-miR-196a-5p  455.152841       -5.361830  1.019622e-59

我想要做的是设置 file['padj'] 列的颜色范围,如下所示:

file['padj'] > 0.01 #gray
file['padj'] <= 0.01 #red
file['padj'] <= 0.0001 #orange

我尝试使用 np.where 来做到这一点,但仅针对其中一种情况。

p = file.plot.scatter(x='baseMean',y='log2FoldChange',c=np.where(np.abs(file['padj'])>0.01, 'gray', 'b'), logx=True)

# specifying horizontal line type
plt.axhline(y = 0, color = 'r', linestyle = '-')
plt.show()

我无法为 np.where 定义多个条件 - 感谢您的帮助。

您可以像这样创建颜色列:

file['color'] = 'gray'
file.loc[file['padj']<=0.01, 'color'] = 'red'
file.loc[file['padj']<=0.0001, 'color'] = 'orange'

并像这样绘制:

plt.scatter(file['baseMean'], file['log2FoldChange'], color=file['color'])

#编辑: 生成图例的 hacky 方式:

for label, color in zip(['>0.01', '<=0.01', '<=0.0001'], ['gray', 'red', 'orange']):
    plt.scatter([],[], c=color,label=label)
plt.legend()