R:ggplot给箱图添加散点和连线

导读

在一幅图里展示箱、散点和折线。

一、模拟输入数据

set.seed(1995)  
# 随机种子

data=matrix(abs(round(rnorm(20, mean=20, sd=5))), 5, 4)  
# 随机正整数,5行,4列

colnames(data)=paste("指标", 1:4, sep=".")  
# 列名

rownames(data)=paste("样品", 1:5, sep=".")  
# 行名

data  # 查看数据,如下:

   指标.1 指标.2 指标.3 指标.4
样品.1     25     18     20     20
样品.2     18     20     19      8
样品.3     21     20     21     13
样品.4     22     19     25      7
样品.5     28     28     13     20

二、调整格式

library(reshape)

input=melt(data)

input  # 结果如下:

           Var1     Var2 value
1  样品.1 指标.1    25
2  样品.2 指标.1    18
3  样品.3 指标.1    21
4  样品.4 指标.1    22
5  样品.5 指标.1    28
6  样品.1 指标.2    18
7  样品.2 指标.2    20
8  样品.3 指标.2    20
9  样品.4 指标.2    19
10 样品.5 指标.2    28
11 样品.1 指标.3    20
12 样品.2 指标.3    19
13 样品.3 指标.3    21
14 样品.4 指标.3    25
15 样品.5 指标.3    13
16 样品.1 指标.4    20
17 样品.2 指标.4     8
18 样品.3 指标.4    13
19 样品.4 指标.4     7
20 样品.5 指标.4    20

三、ggplot画箱图

geom_boxplot():箱图

ggplot(input, aes(x=Var2, y=value, fill=Var2)) +
geom_boxplot() +
labs(x="指标(x轴)", y="值", fill="指标(图例)") +
theme(panel.grid=element_blank(), panel.background=element_rect(fill='transparent', color='black'))
ggplot(input, aes(x=Var2, y=value, color=Var2)) +
geom_boxplot() +
labs(x="指标(x轴)", y="值", color="指标(图例)") +
theme(panel.grid=element_blank(), panel.background=element_rect(fill='transparent', color='black'))

四、添加散点

geom_point():散点图

ggplot(input, aes(x=Var2, y=value, fill=Var2)) +
  geom_boxplot() +
  labs(x="指标(x轴)", y="值", color="指标(图例)") +
  theme(panel.grid=element_blank(), panel.background=element_rect(fill='transparent', color='black')) +
  geom_point(pch=21, fill="black", color="deepskyblue")
ggplot(input, aes(x=Var2, y=value, color=Var2)) +
  geom_boxplot() +
  labs(x="指标(x轴)", y="值", color="指标(图例)") +
  theme(panel.grid=element_blank(), panel.background=element_rect(fill='transparent', color='black')) +
  geom_point()
ggplot(input, aes(x=Var2, y=value)) +
  geom_boxplot(aes(color=Var2)) +
  labs(x="指标(x轴)", y="值", color="指标(图例)") +
  theme(panel.grid=element_blank(), panel.background=element_rect(fill='transparent', color='black')) +  
  geom_dotplot(binaxis='y', stackdir='center', dotsize=0.7, color="white", aes(fill=Var2)) +
  theme(legend.title=element_blank())

五、添加连线

geom_line():折线图

ggplot(input, aes(x=Var2, y=value)) +
  geom_boxplot(aes(color=Var2)) +
  labs(x="指标(x轴)", y="值", color="指标(图例)") +
  theme(panel.grid=element_blank(), panel.background=element_rect(fill='transparent', color='black')) +  
  geom_dotplot(binaxis='y', stackdir='center', dotsize=0.7, color="white", aes(fill=Var2)) +
  theme(legend.title=element_blank()) +
  geom_line(aes(group=Var1), linetype="dashed", col="skyblue")

实战1:

## length
length = read.table("length.txt", header=T, sep="\t")
## wilcox
uhgg = length[length$group=="UHGG",]$length
cgr2 = length[length$group=="CGR2",]$length
mean(uhgg)
mean(cgr2)
wilcox.test(uhgg, cgr2, paired = TRUE)
wilcox.test(uhgg, cgr2, paired = TRUE)$p.value
##
Title = "Wilcoxon p value < 2e-16"
p = ggplot(length, aes(x = group, y = length, color=group)) + 
  labs(x="", y="Genome length", title=Title) +
  theme_classic() +
  geom_boxplot(width=0.5, outlier.colour = NA) +
  # 不显示离群点
  geom_jitter(width = 0.1) +
  # 添加散点
  geom_line(aes(group=pair), color="gray", alpha=0.4) +
  scale_color_manual(values = c('orangered3','deepskyblue3')) +
  theme(panel.grid = element_line(colour = 'white')) +
  theme(legend.position = "none") +
  theme(text = element_text(family="serif")) +
  theme(axis.title = element_text(size = 15),
        axis.text = element_text(size = 15),
        axis.line = element_line(size = 1),
        axis.ticks = element_line(size = 1),
        title = element_text(size = 12))

ggsave(p, filename="length.pdf")

实战2:

ggplot(data, aes(x=Group, y=Ratio)) +
geom_boxplot(outlier.colour = NA, width=0.8) +
theme_classic() +
geom_jitter(width = 0.2, aes(color=Family)) +
scale_color_manual(values = colors) +
labs(x="", y="Relvative ratio") +
theme(axis.title = element_text(size = 20),
        axis.text = element_text(size = 17),
        axis.line = element_line(size = 1),
        axis.ticks = element_line(size = 1),
        title = element_text(size = 15)) +
theme(legend.title=element_text(face="bold"), 
        legend.text=element_text(size=rel(1.1))) +
scale_y_continuous(labels = scales :: percent)

一组不错的参数:

ggplot(alpha, aes(x=source, y=alpha, color=source)) +
  geom_boxplot(width = 0.5,
               size = 1,
               outlier.colour = NA) +
  # size粗细 width宽度 position_dodge间距
  geom_jitter(width = 0.1, size = 3) +
  # width点距 size点大小
  theme_classic() +
  scale_color_manual(values = c("Colon"="#00BA38",
                               "Stool"="#F8766D",
                               "Ileum"="#619CFF")) +
  theme(legend.text=element_text(size=15),
        legend.title=element_text(face='bold', size=20)) +
  labs(x="", 
       y="Shannon index", 
       color="Source") +
  theme(title = element_text(size = 15, face="bold"),
        legend.position = "none") +
  scale_y_continuous(expand = c(0, 0),
                     limits = c(0, 5)) +
  theme(axis.title = element_text(size = 25),
        axis.text.y = element_text(size = 18),
        axis.text.x = element_text(size = 20),
        axis.line = element_line(size = 1),
        axis.ticks = element_line(size = 1))

参数汇总

geom_boxplot(width = 0.5,
               size = 1,
               outlier.colour = NA)
# 箱宽,线条粗细,不显示离群点
geom_jitter(width = 0.1,
                   size = 3)  
# 抖动点,点距,点大小

参考:
https://www.cnblogs.com/ljhdo/p/4921588.html
添加两组比较显著性结果
R语言ggboxplot-一文掌握箱线图绘制所有细节
配对样本基因表达趋势:优化前后的散点连线图+拼图绘制
How to Connect Data Points on Boxplot with Lines?

\color{green}{😀😀原创文章,码字不易,转载请注明出处😀😀}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 主要从如何看图、用图与作图三个方面来对箱线图进行理解和总结。 1、看图 如图所示,箱线图是将一组数据按照大小顺序排...
    dowaves阅读 76,806评论 17 109
  • 参考自https://www.cnblogs.com/ljhdo/p/4921588.html 作者:悦光阴 箱线...
    onlyme_862a阅读 11,474评论 0 13
  • 作者:严涛浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源 ggplot2学习笔记之图...
    wanghaihua888阅读 2,679评论 0 6
  • 1.初识ggplot2 1.1 功能 是一个作图包; 可以创建图表,如散点,柱状图,线图,将数据可视化; 1.2 ...
    笨蛋白熊阅读 45,871评论 0 27
  • 写在前面 ggplot2 是一个功能强大且灵活的R包 ,由Hadley Wickham 编写,其用于生成优雅的图...
    Boer223阅读 28,253评论 0 67