前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「R」数据可视化5 : 气泡图

「R」数据可视化5 : 气泡图

作者头像
王诗翔呀
发布2020-07-06 17:12:26
3.1K0
发布2020-07-06 17:12:26
举报
文章被收录于专栏:优雅R

本文作者蒋刘一琦

在生物信息领域我们常常使用R语言对数据可视化。在对数据可视化的时候,我们需要明确想要展示的信息,从而选择最为合适的图突出该信息。本系列文章将介绍多种基于不同R包的作图方法,希望能够帮助到各位读者。

什么是气泡图

气泡图(Bubble Plot)就是由一个个像气泡元素组成的图。和普通的散点图不同,该图可以展示三维甚至四维信息,如下图:点的位置即其横纵坐标分别代表了Weight和Height,气泡的大小代表了Age,颜色代表了不同个体。

再举几个例子:

上面用了不同形式展示了GO或其他富集的结果。上图和右下图中,我们用颜色代表GO的类别,用横纵坐标代表p-value和z-score,用大小代表富集的基因Count。左下图我们用颜色代表p-value,用大小代表GeneCount,横坐标代表GeneRatio,纵坐标代表具体的类别。

从上述例子中可以发现用气泡图我们能展示更多的数据信息。随着多组学研究的涌现,我们急需在同一张图表来展现多维的数据,气泡图就是一个不错的选择。

怎么做气泡图

1)需要什么格式的数据

根据最终想要在气泡图上展示数据的维度以确定数据的格式。本次用一个来自于GOplo包的数据EC,该数据为RNA-seq的下游分析数据。该数据标准化处理后进行统计分析以确定了差异表达基因。使用DAVID功能注释工具对差异表达基因(调整后的p值<0.05)进行基因注释富集分析。

代码语言:javascript
复制
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数据

由于本次将使用两个包,一个是GOplot专门用于转录组数据的下游展示,还有一个是我们常用的画图包ggplot2。需要注意的是用于ggplot2的作图数据还要基于circ略作修改,具体见下文。

2)如何作图

GOplot包提供了直接做气泡图的方法:

代码语言:javascript
复制
GOBubble(circ, labels = 4)
#labels: Sets a threshold for the displayed labels. The threshold refers to the -log(adjusted p-value) (default=5)

略调整参数之后可以对图的布局、颜色等进行调整:

代码语言:javascript
复制
GOBubble(circ, title = 'Bubble plot', colour = c('orange', 'darkred', 'gold'), display = 'multiple', labels = 3)

然后,我们来看一看用常见的包ggplot2应该如何做该图。首先我们要对数据处理一下,剔除一些不必要的信息:

代码语言:javascript
复制
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
代码语言:javascript
复制
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。

代码语言:javascript
复制
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)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是气泡图
  • 怎么做气泡图
    • 1)需要什么格式的数据
      • 2)如何作图
      相关产品与服务
      图数据库 KonisGraph
      图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档