首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「R」数据可视化7 : 蜜蜂图

「R」数据可视化7 : 蜜蜂图

作者头像
王诗翔呀
发布2020-07-02 15:41:27
1.4K0
发布2020-07-02 15:41:27
举报
文章被收录于专栏:优雅R优雅R优雅R

本文作者蒋刘一琦,自嘲是一个有艺术追求的生信狗,毕业于浙江大学生物信息学专业,目前在复旦大学就读研究生,研究方向为宏基因组。

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

什么是蜜蜂图

不知道蜜蜂图的名字从何而来,我猜测可能是因为画这个图的包叫做beeswarm?我们先来看看蜜蜂图长什么样。

Beeswarm
Beeswarm

看上去和我们之前的点图很像,我们可以直观来比较一下beeswarmggplot中使用jitter及point(默认参数)绘制同一组关于乳腺癌数据的图:

从中可以发现,beeswarm很好的体现了数据的分布,更加清楚、直观。而后两者,难以快速获取信息,point图中点过于密集,jitter中分布过于散乱。这也是很多科学论文选择beeswarm图的原因。在小样本下,也许jitter或者point方法也能够传达我们想要传递的信息,但是在样本量较大的时候,这两个绘图方法就不太适合了。而beeswarm图在大样本的情况下也能使用。不仅可以体现每一个样本具体情况,而且能够查看整体的情况。

怎么做蜜蜂图

本次作图使用两个不同的包,之所以如此,是因为比较常见的制作蜜蜂图的包就叫做“beeswarm”,但是它和ggplot的作图习惯略有差别。鉴于之前都是利用ggplot作图,所以也讲解另一个基于ggplot的名叫“ggbeeswarm”的包。

Note:没有安装相关R包的,先安装R包

1)需要什么格式的数据

本次使用的是beeswarm包中的breast数据。

breast 数据
breast 数据

共有286个样本,具体所表示的信息如下:ER:Estrogen receptor status (factor with levels neg, pos).

ESR1:Expression of the ESR1 gene (numeric).

ERBB2:Expression of the ERBB2 gene (numeric).

time_survival:Time in months (numeric).

event_survival:Coded event: 0 = censored, 1 = metastasis (numeric).

2)如何作图

首先使用beeswarm包
library(beeswarm)
data(breast)
beeswarm(time_survival ~ ER, data = breast,
         pch = 16, pwcol = 1 + as.numeric(event_survival),
         xlab = "", ylab = "Follow-up time (months)",
         labels = c("ER neg", "ER pos"))
legend("topright", legend = c("Yes", "No"),
       title = "Censored", pch = 16, col = 1:2)

可以看到不像ggplot给具体的x=,y=,该包使用公式:举例:p~ grp,那么就相当于x为grp,y为p。另外,其修改图诸多细节的方式也不一致。

pch是选择点的样式,不同的数字代表实心圆、空心圆、三角形、倒三角形等等。

pwcol是用来设置颜色,可以看到这里+1原因是event_survival中含有0值,如果不加1,则显示为无色,即查看不到这些样本。

labels用来修改x轴标签,然后使用legend功能添加图例。

然后我们来看一看另一个R包ggbeeswarm。
ggplot(breast,aes(x=ER,y=time_survival))+
  geom_beeswarm(aes(color=factor(event_survival)),cex=1.5)+#cex用于设置点的密集程度
  theme_bw()+
  theme(
    legend.position = c("top"),
    panel.grid = element_blank()
    
  )+
  scale_color_manual(values=c("Black","Red"),name="Censored",labels=c("Yes","No"))+
  scale_x_discrete(labels=c("ER neg","ER pos"))+
  xlab("")+
  ylab("Follow-up time (months)")

编辑:吴盼成

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是蜜蜂图
  • 怎么做蜜蜂图
    • 1)需要什么格式的数据
      • 2)如何作图
        • 首先使用beeswarm包
        • 然后我们来看一看另一个R包ggbeeswarm。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档