我有一個看起來像這樣的資料框:
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- 任何幫助表示贊賞。
uj5u.com熱心網友回復:
您可以像這樣制作一個顏色列:
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'])
#edit:生成圖例的hacky方式:
for label, color in zip(['>0.01', '<=0.01', '<=0.0001'], ['gray', 'red', 'orange']):
plt.scatter([],[], c=color,label=label)
plt.legend()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/448995.html
標籤:Python 麻木的 matplotlib 阴谋 散点图
下一篇:解決Pandas資料框中的沖突
