如何使用 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()
我的数据框如下所示:
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()