全了!!曼哈頓圖樣樣式、方法大匯總(Python+R)~

2021-12-26 DataCharm

最近小編在後臺看到有的小夥伴留言諮詢曼哈頓圖(Manhattan Plot) 的繪製方法,小編一開始也是比較不了解,奈何我又是一個寵讀者的小編,這就匯總了曼哈頓圖(Manhattan Plot) R和Python的繪製方法,和大家一起進步。主要內容如下:

曼哈頓圖(Manhattan Plot) R繪製方法曼哈頓圖(Manhattan Plot) Python繪製方法曼哈頓圖(Manhattan Plot)簡介

曼哈頓圖(Manhattan Plot) 是一種散點圖,通常用於顯示具有大量數據點,許多非零振幅和更高振幅值分布的數據。(大家知道意思就可以了哈~~),樣例如下:

曼哈頓圖樣例曼哈頓圖(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)

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)

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)

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)

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()

Example Of Manhattan Plot in Python

以上就是對曼哈頓圖(Manhattan Plot) 繪製R和Python小例子,希望對小夥伴們有所幫助~~。

總結

今天的這篇推文算是回應了讀者的繪圖需求,簡單介紹了曼哈頓圖(Manhattan Plot) 的R和Python繪製方法,希望能幫助到需要的小夥伴們~~


再小的技能,也應該被認真對待。

參考資料[1]

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

相關焦點

  • Python 爬蟲神器 PyQuery 的使用方法
    check out <a href="http://reddit.com/r/python"><span>reddit</span></a></p><p id="hello" class="hello">Oh yes!
  • Python爬蟲數據抓取方法匯總!所有方法都在此!
    1、python進行網頁數據抓取有兩種方式:一種是直接依據url連結來拼接使用get方法得到內容,一種是構建post
  • 超級全面的python資料匯總,不看必後悔系列
    一.學習python必備技能圖譜
  • 野蠻數學之蒙特卡洛方法以及python實現
    微信公眾號:數據皮皮俠如果你覺得該公眾號對你有幫助,歡迎關注、推廣和宣傳內容目錄:蒙特卡洛模擬方法及Python實現1.什麼是蒙特卡洛方法(Monte Carlo method)2.蒙特卡洛方法的基本思想3.蒙特卡洛求定積分4.蒙特卡洛方法python實例1.什麼是蒙特卡洛方法(Monte
  • python發送http請求 - CSDN
    [代碼]GET 方法import httplib#-----------------------------conn = httplib.HTTPConnection("www.python.org")conn.request("GET", "/index.html")r1 = conn.getresponse
  • Python入門講解
    3]  [1, 3, 5]  >>> a[1:3:2]  [3]  >>> a[0:3:2]  [1, 5]  >>> a[0:-1:2]  [1, 5]  >>>  List是一個對象,它有一此內置的方法
  • 史上最全 Python 迭代器與生成器
    和可迭代對象不同,可迭代對象一開始是把所有的列表放在一個變量中,然後用getitem方法不斷的返回數值,getitem中的item就是索引值。但是next方法並沒有索引值,所以需要自己維護一個索引值,方便獲取下一個變量的位置。
  • Python字符串函數(四)
    Python字符串函數一、strip函數方法:用於移除字符串頭尾指定的字符(默認為空格)語法:str.strip
  • Python讀取csv文件常見的兩種方法
    「CSV」並不是一種單一的、定義明確的格式(儘管RFC 4180有一個被通常使用的定義)。因此在實踐中,術語「CSV」泛指具有以下特徵的任何文件:1. 純文本,使用某個字符集,比如ASCII、Unicode、EBCDIC或GB2312;2. 由記錄組成(典型的是每行一條記錄);3.
  • Perl還是Python或者R
    如果你精通python,我相信你一周之內肯定能精通perl語言。假如我們把文本處理比作語文,科學計算比喻成數學,數據可視化比喻成繪畫三門學科。生物大數據大多以文本模式存儲,而且同樣屬於非結構化數據,所以,perl自然被大量用在生物數據處理中,有很多生物軟體就是用perl語言寫的,例如rnamer,nucmer等,很多生物軟體安裝包中提供一些附加小工具也是用perl寫的。另外,Perl根植於Linux shell,可以與shell進行很好的配合,比shell編程要更強大,可以替代shell完成很多自動化和批量化的操作。
  • Python 怒解 RAR
    2、編寫代碼,怒解 RAR這裡需要先設置下環境變量 UNRAR_LIB_PATH,設置成上步我們生成 libunrar.so 的路徑,然後再導入 unrar 的 rarfile 模塊時,UNRAR_LIB_PATH 的值就不是 None 了。
  • 使用Python製作表白小程序
    看完之後也是大呼神奇。對於正在學習python的小編來說,更讓我感興趣的還是小程序背後的代碼了。看完之後我就在想,作為萬能的python來說,實現這種功能應該不在話下吧。果不其然,在知乎上看到過一篇文章就是用python來實現一個表白程序。看完之後,小編就驚呆了,原來用python可以這麼簡單的實現這個程序。
  • python爬取【追新番】日劇資源
    本文章爬取資源的磁力連結,伸手黨看這裡追新番日劇資源匯總:http://note.youdao.com/noteshare?id=45162c5834a468c3930ebf8f68545899&sub=3F18E5456297476181729A355A44BACFmarkdown的文件3.25MB,加載會比較慢。在這裡的結果爬取時間是2017年11月11日。
  • 世界記憶|清代「樣式雷」建築圖檔
    ❖ 「清代樣式雷建築圖檔」入選聯合國教科文組織《世界記憶名錄》證書雷氏家族在選址勘察、規劃設計、方案優化、施工修建等階段所繪製的圖樣,製作的燙樣,以及《旨意檔》《堂司諭檔》《隨工日記》和往來書信等文檔被稱為樣式雷圖檔。
  • 樣式雷 究竟是誰?
    樣式雷圖樣今年的國慶黃金周國家大劇院再次上演原創話劇《樣式雷
  • python入門教程06-02(python語法入門之文件處理)
    上一章講解了python的字符編碼,了解了python的字符代碼結構之後就需要了解一下python這門語言是如何處理你給的命令,怎麼去處理文件的,下面我們來了解一二。一 引入應用程式運行過程中產生的數據最先都是存放於內存中的,若想永久保存下來,必須要保存於硬碟中。
  • 「樣式雷」家族傳奇
    另外有資料記載,上個世紀30年代,「樣式雷」為生活所迫,開始瓜分和變賣家中圖檔收藏,雷家每一代都要分家,分家時分的就是圖紙和燙樣。據雷章寶回憶,因為剩下的圖樣都存在北京德勝門的一個高姓人家,而高家曾在樣式雷家分管預算。當時也沒暖氣,好多圖紙,都用來引火給燒了。
  • Python 炫技操作:安裝包的八種方法
    ,可參考我之前寫的文章,介紹得非常清楚:最全的 pip 使用指南,50% 你可能沒用過。由於它是一個第三方工具,因此在使用它之前,需要先安裝$ python3 -m pip install  $ python3 -m userpath append ~/.
  • python colorbar自定義配色
    plt.figure(1,figsize=(8,6))m=mp(llcrnrlon=90.0,llcrnrlat=5.0,urcrnrlon=100.0,urcrnrlat=17.0,\ resolution='i',projection='mill')m.drawcoastlines()lonlabel=['90','92','94','96','98','100']lon_num=[90,92,94,96,98,100
  • Python3的字符串類型(瘋狂Python)
    也可以在字符串前面添加一個 r,表示原始字符串。【如下代碼全部在Ipython實現,後續如無特殊說明,都指在Ipython下】In [1]: txmg = "It is a \'charcter\'."