R绘图系列-分面

这篇文章学习了使用ggplot2进行分面图的绘制,同时学习了对分面的title以及分面间距调整的方法。

数据

1
2
3
4
5
6
7
8
9
10
11
12
head(total_df)
Chr Pos Freq_Total Group
1 1 58497063 0.0952381 ABE
2 1 119672283 0.1000000 ABE
3 1 153456026 0.1428571 ABE
4 1 163951717 0.3672457 ABE
5 11 3943200 0.2037037 ABE
6 11 3943208 0.1363636 ABE

unique(total_df$Group)
[1] ABE ABE2 ABE8 AC AC2 AC8
Levels: AC2 ABE2 AC8 ABE8 AC ABE

基础使用

针对Group变量进行分面:

1
2
3
4
5
6
7
ggplot(data = total_df, aes(x = Chr, y = Freq_Total)) + 
geom_count(color="black",alpha=0.8) +
facet_wrap(~Group,nrow=1) +
scale_size_continuous(name="Number",breaks = c(1,4,7),range=c(1,5)) +
labs(y="RNA AtoG editing",x="Chromosome") + theme_bw() +
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank())

ggplot2_facet_basic0.png


修改分面的title

上面分面之后每个子图的标题都是根据Group内容得到的,这里如果想进行修改可以使用如下方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 建立一个原名和修改之后名称的对应关系
lab_names <- c(
`ABE2` = "ABE2\nn=1483",
`ABE8` = "ABE8\nn=664",
`ABE` = "ABE\nn=237",
`AC2` = "AC2\nn=1346",
`AC8` = "AC8\nn=307",
`AC` = "AC\nn=429"
)

# 修改名称
ggplot(data = total_df, aes(x = Chr, y = Freq_Total)) +
geom_count(color="black",alpha=0.8) +
# 这里使用labeller进行修改
facet_wrap(~Group,labeller = labeller(Group=as_labeller(lab_names)),
nrow=1) +
scale_size_continuous(name="Number",breaks = c(1,4,7),range=c(1,5)) +
labs(y="RNA AtoG editing",x="Chromosome") + theme_bw() +
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank())

ggplot2_facet_basic.png

或者使用named vector也可以进行修改,更多修改包括修改背景、字体可以参考:HOW TO CHANGE GGPLOT FACET LABELS

调整分面的间距

统一调整间距

1
p + theme(panel.spacing = unit(2, "lines"))

ggplot2_facet_space.png


调整某部分的间距

调整第一个分面和后续分面的间距,剩下的分面之间的间距不变

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
library(grid)
gt = ggplot_gtable(ggplot_build(example))
names(gt)
[1] "grobs" "layout" "widths" "heights" "respect" "rownames"
[7] "colnames" "name" "gp" "vp" "children" "childrenOrder"

gt$widths
[1] 5.5pt
[2] 0cm
[3] 1grobwidth
[4] 0.650222602739726cm
[5] 1null
[6] 0cm
[7] 5.5pt
[8] 0cm
[9] 1null
[10] 0cm
[11] 5.5pt
...
# 增加第一个分面和后续的距离
gt$widths[7] = 5*gt$widths[7]
grid.draw(gt)

ggplot2_facet_space1.png


参考链接



-----本文结束感谢您的阅读-----

本文标题:R绘图系列-分面

文章作者:showteeth

发布时间:2020年05月18日 - 17:41

最后更新:2020年05月21日 - 23:15

原始链接:http://showteeth.tech/posts/45543.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%