简介
关于分面的推文,小编根据实际科研需求,已经分享了很多技巧。例如:
最近遇到了另一个需求:在分面中添加不同的表格。网上搜索后找到了不错的解决方案,见 stack overflow[1]。本期就针对该问题,给出合适的解决方案。
教程
library(ggpp) library(dplyr) library(tibble)
数据介绍
以 mpg
数据集作为例子,经过数据预处理后,前几行数据如下所示:
myData <- filter(mpg, manufacturer == "audi" | manufacturer == "chevrolet")
绘图
- 分面
根据数据集,以 hwy
为 x 轴,cty
为 y 轴,绘制散点图并附上平滑曲线。最后以 manufacturer
进行分面,得到的结果如下:
gg <- ggplot(myData, aes(x=hwy, y=cty, colour=model)) + facet_wrap(~ manufacturer) + geom_point(size = 3) + geom_smooth(stat="identity")
- 添加表格
2.1 数据汇总,便于后续加入到表格中。
tb <- myData %>% group_by(manufacturer, model) %>% summarize(var1 = round(mean(displ)), var2 = round(mean(cyl))) %>% ungroup()
2.2 转化为 list 形式,便于后续使用。
tbs <- lapply(split(tb, tb$manufacturer), "[", -1)
2.3 转化为 tibble 格式,并加入相关信息
注意:这里的 manufacturer 与前面分面相对应。
df <- tibble(x = rep(-Inf, length(tbs)), y = rep(Inf, length(tbs)), manufacturer = levels(as.factor(tb$manufacturer)), tbl = tbs)
df 数据集
- 合并图形和表格
gg + geom_table(data = df, aes(x = x, y = y, label = tbl), hjust = -0.2, vjust = 1.2)
- 美化图形
library(viridis) gg + geom_table(data = df, aes(x = x, y = y, label = tbl), hjust = -0.2, vjust = 1.2, table.theme = ttheme_gtstripes) + scale_color_viridis(discrete = TRUE) + theme_bw() + theme(panel.grid = element_blank(), legend.position = "bottom", legend.direction = "horizontal") + guides(color=guide_legend(nrow=1))
小编有话说
- 上个月博士开题完成了,如果想正常毕业的话(3年学制),我只剩下一年多时间完成毕业论文了,时间还是非常紧张的。
- 最近在办理留学签证,不久就要去新加坡啦,有点兴奋也有点焦虑。
参考资料
[1]