全了!!曼哈顿图样样式、方法大汇总,超简单~~

本文介绍了如何使用R和Python绘制曼哈顿图,这是一种常用于展示大量基因组数据点的散点图。在R中,通过R-CMplot包提供了多种绘制方法,包括添加图例和修改颜色等;在Python中,利用pandas和matplotlib库进行数据处理和绘图。示例代码详尽展示了具体的绘制步骤。
摘要由CSDN通过智能技术生成

最近小编在后台看到有的小伙伴留言咨询曼哈顿图(Manhattan Plot) 的绘制方法,小编一开始也是比较不了解,奈何我又是一个宠读者的小编,这就汇总了曼哈顿图(Manhattan Plot) R和Python的绘制方法,和大家一起进步。主要内容如下:

  • 曼哈顿图(Manhattan Plot)简介

  • 曼哈顿图(Manhattan Plot) R绘制方法

  • 曼哈顿图(Manhattan Plot) Python绘制方法

曼哈顿图(Manhattan Plot)简介

曼哈顿图(Manhattan Plot) 是一种散点图,通常用于显示具有大量数据点,许多非零振幅和更高振幅值分布的数据。(大家知道意思就可以了哈~~),样例如下:

50ac3a7081df989e5d767eb27c4a3ffd.jpeg
曼哈顿图样例

曼哈顿图(Manhattan Plot) R绘制方法

使用R绘制曼哈顿图(Manhattan Plot) 的方法很多,这里主要介绍R-CMplot包的绘制方法,如下:

library(CMplot)
data(pig60K)   
data(cattle50K) 
# 这边的数据都是规整好的DF类型数据
#可视化绘制
CMplot(pig60K,type="p",plot.type="c",chr.labels=paste("Chr",c(1:18,"X","Y"),sep=""),r=0.4,cir.legend=TRUE,
        outward=FALSE,cir.legend.col="black",cir.chr.h=1.3,chr.den.col="black",
        file="jpg",memo="",dpi=600,file.output=TRUE,verbose=TRUE,width=10,height=10)

610e4b28ac12ce98f68aa450545390cd.jpeg

Example01 Of CMplot make

当然,你也可以通添加图例和修改颜色,如下:

CMplot(pig60K,type="p",plot.type="c",r=0.4,col=c("grey30","grey60"),chr.labels=paste("Chr",c(1:18,"X","Y"),sep=""),
      threshold=c(1e-6,1e-4),cir.chr.h=1.5,amplify=TRUE,threshold.lty=c(1,2),threshold.col=c("red",
      "blue"),signal.line=1,signal.col=c("red","green"),chr.den.col=c("darkgreen","yellow","red"),
      bin.size=1e6,outward=FALSE,file="jpg",memo="",dpi=300,file.output=TRUE,verbose=TRUE,width=10,height=10)

14da8f8c415cb5f8089e44b308d6bd31.png

Example02 Of CMplot make

你也可以绘制常规的曼哈顿图(Manhattan Plot),如下:

CMplot(pig60K,type="p",plot.type="m",LOG10=TRUE,threshold=NULL,file="jpg",memo="",dpi=300,
    file.output=TRUE,verbose=TRUE,width=14,height=6,chr.labels.angle=45)
6b3486bf526ab206a6c3d1fc4102268b.jpeg
Example03 Of CMplot make
  • 在曼哈顿图的底部附加染色体密度

CMplot(pig60K, plot.type="m", LOG10=TRUE, ylim=NULL, threshold=c(1e-6,1e-4),threshold.lty=c(1,2),
        threshold.lwd=c(1,1), threshold.col=c("black","grey"), amplify=TRUE,bin.size=1e6,
        chr.den.col=c("darkgreen", "yellow", "red"),signal.col=c("red","green"),signal.cex=c(1.5,1.5),
        signal.pch=c(19,19),file="jpg",memo="",dpi=300,file.output=TRUE,verbose=TRUE,
        width=14,height=6)
1be9c242bc1c183d007cbaaf1749a575.jpeg
Example03 Of CMplot make with chromosome density

这里还有更多的关于CMplot包绘制曼哈顿图(Manhattan Plot)的小例子,具体就是CMplot()绘图函数中不同参数的设置。更多详细参数设置可参考:R-CMplot包官网[1]

曼哈顿图(Manhattan Plot) Python绘制方法

Python绘制曼哈顿图则需要进行必要的数据处理操作,详细内容如下:

from pandas import DataFrame
from scipy.stats import uniform
from scipy.stats import randint
import numpy as np
import matplotlib.pyplot as plt

# sample data
df = DataFrame({'gene' : ['gene-%i' % i for i in np.arange(10000)],
               'pvalue' : uniform.rvs(size=10000),
               'chromosome' : ['ch-%i' % i for i in randint.rvs(0,12,size=10000)]})

# -log_10(pvalue)
df['minuslog10pvalue'] = -np.log10(df.pvalue)
df.chromosome = df.chromosome.astype('category')
df.chromosome = df.chromosome.cat.set_categories(['ch-%i' % i for i in range(12)], ordered=True)
df = df.sort_values('chromosome')

# How to plot gene vs. -log10(pvalue) and colour it by chromosome?
df['ind'] = range(len(df))
df_grouped = df.groupby(('chromosome'))

# manhattan plot
fig = plt.figure(figsize=(10,4),dpi=100) 
ax = fig.add_subplot(111)

colors = ["#30A9DE","#EFDC05","#E53A40","#090707"]
x_labels = []
x_labels_pos = []
for num, (name, group) in enumerate(df_grouped):
    group.plot(kind='scatter', x='ind', y='minuslog10pvalue',color=colors[num % len(colors)], ax=ax)
    x_labels.append(name)
    x_labels_pos.append((group['ind'].iloc[-1] - (group['ind'].iloc[-1] - group['ind'].iloc[0])/2))
# add grid
ax.grid(axis="y",linestyle="--",linewidth=.5,color="gray")
ax.tick_params(direction='in',labelsize=13)
ax.set_xticks(x_labels_pos)
ax.set_xticklabels(x_labels)

ax.set_xlim([0, len(df)])
ax.set_ylim([0, 4])
# x axis label
ax.set_xlabel('Chromosome',size=14)
plt.savefig('Manhattan Plot in Python.png',dpi=900,bbox_inches='tight',facecolor='white')
plt.show()

213137471b0b834b56ae7105401b435e.png

Example Of Manhattan Plot in Python

以上就是对曼哈顿图(Manhattan Plot) 绘制R和Python小例子,希望对小伙伴们有所帮助~~。

总结

今天的这篇推文算是回应了读者的绘图需求,简单介绍了曼哈顿图(Manhattan Plot) 的R和Python绘制方法,希望能帮助到需要的小伙伴们~~

参考资料

[1]

R-CMplot包官网: https://github.com/YinLiLin/CMplot。

-------- End --------

44c2d8c4f0d25d6b094d21a74ace79f3.jpeg
精选内容
b6f6321fa052470d8e70bed6cef83cf5.jpeg d563d4509deda8a51d0b2822af295866.jpeg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值