复现Nature medicine图表:柱状图结合蜂群散点图

文章展示了如何使用R语言的ggbeeswarm和ggplot2包来复现Nature杂志上的一种图表组合,即柱状图与蜂群散点图。通过读取数据,进行数据整理,然后利用geom_bar和geom_beeswarm函数创建图形,对比了蜂群图与普通抖动点的效果,为初学者提供了ggplot2绘图的学习实例。
摘要由CSDN通过智能技术生成

今天我们来复现一下一篇NM上的图表,是柱状图结合和散点图,只不过散点图是蜂群散点图。关于蜂群图的做法我们之前介绍过这个R包了,参考:复现《nature communications》散点小提琴图+蜜蜂图。示例数据及代码已上传群文件!!!

读入数据整理一下:

setwd("D:/KS项目/公众号文章/蜂群图结合柱状图")
df <- read.csv("df.csv", header = T)

library(tidyr)
data <-gather(df, gene, value, 1:7)

作图,主要是用ggbeeswarm包实现效果。


library(ggbeeswarm)
library(ggplot2)
ggplot(data, aes(x=gene,y=value,shape=gene))+
  geom_bar(stat="summary",
           width=0.9,#宽度
           size=0.5,color='black', fill='white')+
  stat_summary(fun.data = 'mean_se', 
               geom = "errorbar", 
               colour = "black",
               width = 0.2,
               position=position_dodge(0.7))+
  geom_beeswarm(dodge.width = 0.8,aes(y = value,x=gene,fill=gene),
                size=3, show.legend = FALSE)+
  scale_shape_manual(values =c(21,21,22,22,21,21,21))+
  scale_fill_manual(values = c("black","#68317F","#E7628C","#00A66C",
                                      "#5363A5","#F6D6B7","orange"))+
  theme_classic()+
  theme(axis.text = element_text(size = 12, color="black"),
        axis.line.y = element_line(color = 'black'),
        axis.title.y = element_text(size = 14, color="black"))+
  theme(axis.title.x = element_blank())+
  theme(panel.grid = element_blank(),
        panel.background = element_blank())+
  scale_y_continuous(expand=c(0,0))

看看普通抖动点的效果:


ggplot(data, aes(x=gene,y=value,shape=gene))+
  geom_bar(stat="summary",
           width=0.9,#宽度
           size=0.5,color='black', fill='white')+ 
  stat_summary(fun.data = 'mean_se', 
               geom = "errorbar", 
               colour = "black",
               width = 0.2,
               position=position_dodge(0.7))+
  geom_jitter(data = data, aes(y = value,x=gene,fill=gene),
              size = 4,
              stroke = 0.15, show.legend = FALSE, 
              position = position_jitterdodge(jitter.height=0.5,
                                              jitter.width = 0.1,
                                              dodge.width = 0.8))+
  scale_shape_manual(values =c(21,21,22,22,21,21,21))+
  scale_fill_manual(values = c("black","#68317F","#E7628C","#00A66C",
                                      "#5363A5","#F6D6B7","orange"))+
                                        theme_classic()+
  theme(axis.text = element_text(size = 12, color="black"),
        axis.line.y = element_line(color = 'black'),
        axis.title.y = element_text(size = 14, color="black"))+
  theme(axis.title.x = element_blank())+
  theme(panel.grid = element_blank(),
        panel.background = element_blank())+
  scale_y_continuous(expand=c(0,0))

仔细思考阅读,对于初学者在ggplot的绘图学习上我想会有很大的帮助。觉得分享有用的点个赞再走呗!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值