以箱图和散点图为例,给ggplot散点添加配对连线。方法使用简单,就是geom_line(aes(group = pair))即可。给geom_point添加配对连线时需要使用position_dodge函数配置线端点位置与点一致。
一、箱图:添加散点,连线
1 输入格式
id group Completeness
AF04-12 BGISEQ 99.25
AF04-12 Illumina 98.76
AF04-17 BGISEQ 99.46
AF04-17 Illumina 98.9
AF04-28 BGISEQ 93.55
AF04-28 Illumina 93.55
AF11-25B BGISEQ 99.54
AF11-25B Illumina 99.08
2 wilcox分析和绘图代码
## complete
library("ggplot2")
data = read.table("data.txt", header=T, sep="\t")
## wilcox
bgi = data[data$group=="BGISEQ",]$Completeness
illu = data[data$group=="Illumina",]$Completeness
mean(bgi)
mean(illu)
wilcox.test(bgi, illu, paired = TRUE)
##
Title = "Wilcoxon p value < 2.5e-13"
p = ggplot(data, aes(x = group, y = Completeness, color=group)) +
labs(x="", y="Completeness (%)", title=Title) +
theme_classic() +
geom_boxplot(width=0.5, outlier.colour = NA, lwd = 1) +
geom_line(aes(group=id), color="gray" ,position = position_dodge(0.2)) +
geom_point(aes(fill=group, group=id),
size = 2,
position = position_dodge(0.2)) +
scale_fill_manual(values = c('orangered3','deepskyblue3')) +
theme(panel.grid = element_line(colour = 'white')) +
theme(legend.position="none") +
theme(axis.title = element_text(size = 30),
axis.text = element_text(size = 28),
axis.line = element_line(size = 1),
axis.ticks = element_line(size = 1),
title = element_text(size = 20))
ggsave(p, filename="complete.png")
二、PCOA散点图:添加散点,连线
1 输入数据格式
id group Completeness Contamination gc contigs largest length
1 AF04_12 BGISEQ 99.25 0.13 42.03 143 332931 5076534
2 AF04_12 Illumina 98.76 0.13 42.00 136 365905 5105661
3 AF04_17 BGISEQ 99.46 0.08 41.99 106 412791 6672015
4 AF04_17 Illumina 98.90 0.08 41.98 104 386819 6663758
5 AF04_28 BGISEQ 93.55 0.61 42.57 36 744099 4803502
6 AF04_28 Illumina 93.55 1.99 42.54 36 616477 4874474
N50 N_per_100_kbp Genome_fraction
1 80303 4.14 99.061
2 83739 9.01 99.634
3 140135 1.05 99.899
4 137940 4.53 99.763
5 363431 696.22 97.450
6 363455 13.13 99.569
2 绘图数据格式
> head(pcoa_point)
Axis.1 Axis.2 Platform pair
1 -0.1485042 0.08032245 BGISEQ AF04_12
2 -0.1490304 0.07219616 Illumina AF04_12
3 -0.2436660 0.02873192 BGISEQ AF04_17
4 -0.2445737 0.03555739 Illumina AF04_17
5 -0.1109480 -0.05709881 BGISEQ AF04_28
6 -0.1157950 -0.03534015 Illumina AF04_28
3 PCOA分析,画图代码
library(vegan)
library(ape)
setwd("../pcoa/")
data = read.table("data.txt", sep="\t", header=T)
input = data[, c(-1, -2)]
veg = vegdist(input, method = "bray")
pcoa = pcoa(veg)
pcoa_point = data.frame(pcoa$vectors[, c(1, 2)], Platform = data$group, pair = data$id)
#write.csv(pcoa_point, file="pcoa_bc.csv")
xylab = paste(c("PCoA1: ", "PCoA2: "), round(pcoa$values$Relative_eig[1:2]*100, 2), "%", sep = "")
# https://datavizpyr.com/connect-paired-points-with-lines-in-scatterplot-in-ggplot2/
result =
ggplot(pcoa_point, aes(x=Axis.1, y=Axis.2, color=Platform)) +
geom_point(pch=19, size=4) +
stat_ellipse(level = 0.95, show.legend = F, aes(color=Platform)) +
geom_line(aes(group = pair), color = "grey") +
theme_classic() +
labs(x=xylab[1], y=xylab[2], title = paste('Bray-Curtis PCoA')) +
theme(legend.background = element_rect(color = "black", linetype = "solid", size = 1)) +
theme(legend.text=element_text(size=15)) +
theme(legend.title=element_text(face='bold', size=20)) +
#theme(text=element_text(family="serif")) +
theme(axis.title = element_text(size = 20)) +
theme(axis.text = element_text(size = 15),
axis.line = element_line(size = 1),
axis.ticks = element_line(size = 1)) +
theme(plot.title = element_text(face="bold", size=16)) +
scale_fill_manual(
values = c("BGISEQ" = "orangered3",
"Illumina" = "deepskyblue3")) +
scale_color_manual(
values = c("BGISEQ" = "orangered3",
"Illumina" = "deepskyblue3"))
ggsave(result, filename="pcoa_bc.png", width = 8)
三、棒棒糖图
1 输入数据格式
id length_bgi length_illumina illumina_minus_bgi Genus
1 AF04-12 1524 1524 0 Bacteroides
2 AF04-17 1525 1525 0 Bacteroides
3 AF04-28 992 1525 533 Bacteroides
4 AF11-25B 1434 1526 92 Bifidobacterium
5 AF13-35 1545 1545 0 Streptococcus
6 AF14-49 1522 984 -538 Butyricimonas
2 数据处理及绘图代码
library(ggplot2)
df = read.table("data.txt", header=T, sep="\t")
data = df[order(df$length_bgi, decreasing=T), c(1,2,3)]
input = melt(data, id='id')
input$id = factor(input$id, levels = c(unique(input$id)))
result =
ggplot(input, aes(x=value, y=id)) +
geom_line(aes(group = id)) +
geom_point(aes(color = variable), size=4) +
theme(legend.position="top")
ggsave(result, file="test.pdf", height = 14)
参考更多:
How To Connect Paired Points with Lines in Scatterplot in ggplot2?
https://datavizpyr.com/dumbbell-plot-in-r-with-ggplot2/
网友评论