R數(shù)據(jù)可視化7:氣泡圖 Bubble Plot

“氣泡圖”這個(gè)名字聽著就很可愛是不是!今天讓我們來看看這個(gè)氣泡圖長(zhǎng)什么樣,可以展示什么樣的數(shù)據(jù),以及如何用R作圖。

什么是氣泡圖

氣泡圖(Bubble Plot)就是由一個(gè)個(gè)像氣泡元素組成的圖伯诬,和普通的散點(diǎn)圖不同,該圖可以展示三維甚至四維信息巫财,如下圖:點(diǎn)的位置即其橫縱坐標(biāo)分別代表了Weight和Height盗似,氣泡的大小代表了Age,顏色代表了不同個(gè)體平项。

再舉幾個(gè)例子:

上面用了不同形式展示了GO或其他富集的結(jié)果桥言。上圖和右下圖中萌踱,我們用顏色代表GO的類別,用橫縱坐標(biāo)代表p-value和z-score号阿,用大小代表富集的基因Count并鸵。左下圖我們用顏色代表p-value,用大小代表GeneCount扔涧,橫坐標(biāo)代表GeneRatio园担,縱坐標(biāo)代表具體的類別。
從上述例子中可以發(fā)現(xiàn)用氣泡圖我們能展示更多的數(shù)據(jù)信息枯夜。隨著多組學(xué)研究的涌現(xiàn)弯汰,我們急需在同一張圖表理展現(xiàn)多維的數(shù)據(jù),氣泡圖就是一個(gè)不錯(cuò)的選擇湖雹。

怎么做氣泡圖

1)需要什么格式的數(shù)據(jù)
根據(jù)最終想要在氣泡圖上展示數(shù)據(jù)的維度以確定數(shù)據(jù)的格式咏闪。
本次用一個(gè)來自于GOplo包的數(shù)據(jù)EC,該數(shù)據(jù)為RNA-seq的下游分析數(shù)據(jù)摔吏。
該數(shù)據(jù)標(biāo)準(zhǔn)化處理后進(jìn)行統(tǒng)計(jì)分析以確定了差異表達(dá)基因鸽嫂。 使用DAVID功能注釋工具對(duì)差異表達(dá)基因(調(diào)整后的p值<0.05)進(jìn)行基因注釋富集分析。

library(GOplot)
data(EC)
head(EC$david)
##   Category         ID                             Term
## 1       BP GO:0007507                heart development
## 2       BP GO:0001944          vasculature development
## 3       BP GO:0001568         blood vessel development
## 4       BP GO:0048729             tissue morphogenesis
## 5       BP GO:0048514       blood vessel morphogenesis
## 6       BP GO:0051336 regulation of hydrolase activity
##                                                                                                                                                                                                                                                                                                                                                                              Genes
## 1       DLC1, NRP2, NRP1, EDN1, PDLIM3, GJA1, TTN, GJA5, ZIC3, TGFB2, CERKL, GATA6, COL4A3BP, GAB1, SEMA3C, MKL2, SLC22A5, MB, PTPRJ, RXRA, VANGL2, MYH6, TNNT2, HHEX, MURC, MIB1, FOXC2, FOXC1, ADAM19, MYL2, TCAP, EGLN1, SOX9, ITGB1, CHD7, HEXIM1, PKD2, NFATC4, PCSK5, ACTC1, TGFBR2, NF1, HSPG2, SMAD3, TBX1, TNNI3, CSRP3, FOXP1, KCNJ8, PLN, TSC2, ATP6V0A1, TGFBR3, HDAC9
## 2 GNA13, ACVRL1, NRP1, PGF, IL18, LEPR, EDN1, GJA1, FOXO1, GJA5, TGFB2, WARS, CERKL, APOE, CXCR4, ANG, SEMA3C, NOS2, MKL2, FGF2, RAPGEF1, PTPRJ, RECK, EFNB2, VASH1, PNPLA6, THY1, MIB1, NUS1, FOXC2, FOXC1, CAV1, CDH2, MEIS1, WT1, CDH5, PTK2, FBXW8, CHD7, PLCD1, PLXND1, FIGF, PPAP2B, MAP2K1, TBX4, TGFBR2, NF1, TBX1, TNNI3, LAMA4, MEOX2, ECSCR, HBEGF, AMOT, TGFBR3, HDAC7
## 3        GNA13, ACVRL1, NRP1, PGF, IL18, LEPR, EDN1, GJA1, FOXO1, GJA5, TGFB2, WARS, CERKL, APOE, CXCR4, ANG, SEMA3C, NOS2, MKL2, FGF2, RAPGEF1, PTPRJ, RECK, VASH1, PNPLA6, THY1, MIB1, NUS1, FOXC2, FOXC1, CAV1, CDH2, MEIS1, WT1, CDH5, PTK2, FBXW8, CHD7, PLCD1, PLXND1, FIGF, PPAP2B, MAP2K1, TBX4, TGFBR2, NF1, TBX1, TNNI3, LAMA4, MEOX2, ECSCR, HBEGF, AMOT, TGFBR3, HDAC7
## 4                                   DLC1, ENAH, NRP1, PGF, ZIC2, TGFB2, CD44, ILK, SEMA3C, RET, AR, RXRA, VANGL2, LEF1, TNNT2, HHEX, MIB1, NCOA3, FOXC2, FOXC1, TGFB1I1, WNT5A, COBL, BBS4, FGFR3, TNC, BMPR2, CTNND1, EGLN1, NR3C1, SOX9, TCF7L1, IGF1R, FOXQ1, MACF1, HOXA5, BCL2, PLXND1, CAR2, ACTC1, TBX4, SMAD3, FZD3, SHANK3, FZD6, HOXB4, FREM2, TSC2, ZIC5, TGFBR3, APAF1
## 5                                                                                            GNA13, CAV1, ACVRL1, NRP1, PGF, IL18, LEPR, EDN1, GJA1, CDH2, MEIS1, WT1, TGFB2, WARS, PTK2, CERKL, APOE, CXCR4, ANG, SEMA3C, PLCD1, NOS2, MKL2, PLXND1, FIGF, FGF2, PTPRJ, TGFBR2, TBX4, NF1, TBX1, TNNI3, PNPLA6, VASH1, THY1, NUS1, MEOX2, ECSCR, AMOT, HBEGF, FOXC2, FOXC1, HDAC7
## 6                                                                               CAV1, XIAP, AGFG1, ADORA2A, TNNC1, TBC1D9, LEPR, ABHD5, EDN1, ASAP2, ASAP3, SMAP1, TBC1D12, ANG, TBC1D14, MTCH1, TBC1D13, TBC1D4, TBC1D30, DHCR24, HIP1, VAV3, NOS1, NF1, MYH6, RICTOR, TBC1D22A, THY1, PLCE1, RNF7, NDEL1, CHML, IFT57, ACAP2, TSC2, ERN1, APAF1, ARAP3, ARAP2, ARAP1, HTR2A, F2R
##      adj_pval
## 1 0.000002170
## 2 0.000010400
## 3 0.000007620
## 4 0.000119000
## 5 0.000720000
## 6 0.001171166
head(EC$genelist)
##        ID    logFC   AveExpr        t  P.Value adj.P.Val        B
## 1 Slco1a4 6.645388 1.2168670 88.65515 1.32e-18  2.73e-14 29.02715
## 2 Slc19a3 6.281525 1.1600468 69.95094 2.41e-17  2.49e-13 27.62917
## 3     Ddc 4.483338 0.8365231 65.57836 5.31e-17  3.65e-13 27.18476
## 4 Slco1c1 6.469384 1.3558865 59.87613 1.62e-16  8.34e-13 26.51242
## 5  Sema3c 5.515630 2.3252117 58.53141 2.14e-16  8.81e-13 26.33626
## 6 Slc38a3 4.761755 0.9218670 54.11559 5.58e-16  1.76e-12 25.70308
circ <- circle_dat(EC$david, EC$genelist)
circ數(shù)據(jù)

由于本次將使用兩個(gè)包一個(gè)是GOplot專門用于轉(zhuǎn)錄組數(shù)據(jù)的下游展示征讲,還有一個(gè)是我們常用的畫圖包ggplot2据某,需要注意的是用于ggplot2的作圖數(shù)據(jù)還要基于circ略作修改,具體見下文诗箍。

2)如何作圖
GOplot包提供了直接做氣泡圖的方法:

GOBubble(circ, labels = 4)
#labels: Sets a threshold for the displayed labels. The threshold refers to the -log(adjusted p-value) (default=5)

略調(diào)整參數(shù)之后可以對(duì)圖的布局癣籽、顏色等進(jìn)行調(diào)整:

GOBubble(circ, title = 'Bubble plot', colour = c('orange', 'darkred', 'gold'), display = 'multiple', labels = 3)

然后,我們來看一看用常見的包ggplot2應(yīng)該如何做該圖滤祖。
首先我們要對(duì)數(shù)據(jù)處理一下筷狼,剔除一些不必要的信息:

circ2<-circ[!duplicated(circ$ID),-5]
head(circ2)

##    category         ID                             term count      logFC    adj_pval     zscore
## 1         BP GO:0007507                heart development    54 -0.9707875 0.000002170 -0.8164966
## 55        BP GO:0001944          vasculature development    56  0.3711599 0.000010400 -0.8017837
## 111       BP GO:0001568         blood vessel development    55  0.3711599 0.000007620 -0.6741999
## 166       BP GO:0048729             tissue morphogenesis    51 -0.9707875 0.000119000 -0.1400280
## 217       BP GO:0048514       blood vessel morphogenesis    43  0.3711599 0.000720000 -0.1524986
## 260       BP GO:0051336 regulation of hydrolase activity    42 -0.9567264 0.001171166  0.3086067

library(ggplot2)
library(RColorBrewer)
library(ggrepel)

ggplot(circ2,aes(x=zscore,y=-log10(adj_pval)))+
  geom_point(aes(size=count,color=category),alpha=0.6)+
  scale_size(range=c(1,12))+
  scale_color_brewer(palette = "Accent")+
  theme_bw()+
  theme(
    #legend.position = c("none")
  )+
  geom_text_repel(
    data = circ2[-log10(circ2$adj_pval)>3,],
    aes(label = ID),
    size = 3,
    segment.color = "black", show.legend = FALSE )

稍作改變,去除圖例添加facet匠童。

library(ggplot2)
library(RColorBrewer)
library(ggrepel)

ggplot(circ2,aes(x=zscore,y=-log10(adj_pval)))+
  geom_point(aes(size=count,color=category),alpha=0.6)+
  scale_size(range=c(1,12))+
  scale_color_brewer(palette = "Accent")+
  theme_bw()+
  theme(
    legend.position = c("none")
  )+
  geom_text_repel(
    data = circ2[-log10(circ2$adj_pval)>3,],
    aes(label = ID),
    size = 3,
    segment.color = "black", show.legend = FALSE )+
  facet_grid(.~category)

往期 R數(shù)據(jù)可視化 分享
R數(shù)據(jù)可視化6: 面積圖 Area Chart
R數(shù)據(jù)可視化5: 熱圖 Heatmap
R數(shù)據(jù)可視化4: PCA和PCoA圖
R數(shù)據(jù)可視化3: 直方/條形圖
R數(shù)據(jù)可視化2: 箱形圖 Boxplot
R數(shù)據(jù)可視化1: 火山圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末桑逝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子俏让,更是在濱河造成了極大的恐慌,老刑警劉巖茬暇,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件首昔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡糙俗,警方通過查閱死者的電腦和手機(jī)勒奇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巧骚,“玉大人赊颠,你說我怎么就攤上這事格二。” “怎么了竣蹦?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵顶猜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我痘括,道長(zhǎng)长窄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任纲菌,我火速辦了婚禮挠日,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翰舌。我一直安慰自己嚣潜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布椅贱。 她就那樣靜靜地躺著懂算,像睡著了一般。 火紅的嫁衣襯著肌膚如雪夜涕。 梳的紋絲不亂的頭發(fā)上犯犁,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音女器,去河邊找鬼酸役。 笑死,一個(gè)胖子當(dāng)著我的面吹牛驾胆,可吹牛的內(nèi)容都是我干的涣澡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼丧诺,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼入桂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驳阎,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤抗愁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后呵晚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜘腌,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年饵隙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撮珠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡金矛,死狀恐怖芯急,靈堂內(nèi)的尸體忽然破棺而出勺届,到底是詐尸還是另有隱情,我是刑警寧澤娶耍,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布免姿,位于F島的核電站,受9級(jí)特大地震影響伺绽,放射性物質(zhì)發(fā)生泄漏养泡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一奈应、第九天 我趴在偏房一處隱蔽的房頂上張望澜掩。 院中可真熱鬧,春花似錦杖挣、人聲如沸肩榕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽株汉。三九已至,卻和暖如春歌殃,著一層夾襖步出監(jiān)牢的瞬間乔妈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工氓皱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留路召,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓波材,卻偏偏與公主長(zhǎng)得像股淡,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子廷区,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355