R数据可视化10:蜜蜂图 Beeswarm

作者: jlyq617 | 来源:发表于2019-11-08 20:01 被阅读0次

    忙碌于实验的一周。写代码的时候是只要写代码就要动脑子,最简单的读文件,也是要小小动一下脑子。而做实验的时候是计划实验的时候动脑子,实验中机械操作,然后实验失败的时候是费脑子。永远不知道是我有问题,样本有问题,还是实验过程有问题,总是在重复摸索,好难。正文——————————今天我们来讲蜜蜂图,这图也看着确实很吵闹,仿佛耳边嗡嗡作响。

    什么是蜜蜂图

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

    Beeswarm

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

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

    怎么做蜜蜂图

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

    1)需要什么格式的数据
    本次使用的是beeswarm包中的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)")
    
    

    往期 R数据可视化 分享

    R数据可视化9: 棒棒糖图 Lollipop Chart
    R数据可视化8: 金字塔图和偏差图
    R数据可视化7: 气泡图 Bubble Plot
    R数据可视化6: 面积图 Area Chart
    R数据可视化5: 热图 Heatmap
    R数据可视化4: PCA和PCoA图
    R数据可视化3: 直方/条形图
    R数据可视化2: 箱形图 Boxplot
    R数据可视化1: 火山图

    相关文章

      网友评论

        本文标题:R数据可视化10:蜜蜂图 Beeswarm

        本文链接:https://www.haomeiwen.com/subject/aypibctx.html