r - 使用 ggplot 和 facet_wrap 绘制多个图
问题描述
样本数据
set.seed(123)
df <- data.frame(loc.id = rep(c(1:3), each = 4*10),
year = rep(rep(c(1980:1983), each = 10), times = 3),
day = rep(1:10, times = 3*4),
x = sample(123:200, 4*3*10, replace = T),
start = 123,
end = 200)
我想将loc.id
所有年份的图表保存在单个页面中facet_wrap
,并将每个页面中的每个loc.id
页面保存为 pdf。以下循环执行此操作:
loc.vec <- 1:3
pdf("my.pdf")
for(l in seq_along(loc.vec)){
loc.id <- loc.vec[l]
df.sub <- df[df$loc.id == loc.id,]
pp <- ggplot(df.sub,aes(x = day, y = x)) + geom_line() +
facet_wrap(~year) +
geom_vline(aes(xintercept = df.sub$start)) +
geom_vline(aes(xintercept = df.sub$end))
print(pp)
}
dev.off()
我可以在没有循环的情况下实现吗?
谢谢
解决方案
这是使用的解决方案purrr
:
library(tidyverse)
f_plot <- function(id) {
df %>%
filter(loc.id == id) %>%
ggplot(., aes(x = day, y = x)) +
geom_line() +
facet_wrap(~year) +
geom_vline(aes(xintercept = start)) +
geom_vline(aes(xintercept = end))
}
pdf("my2.pdf")
map(loc.vec, f_plot)
dev.off()
推荐阅读
- javascript - Papaparse 未解析配置分隔符
- node.js - Electron + React + TypeScript + WebPack 桌面应用程序:找不到模块...“隧道代理”中的“tls”
- unity3d - 当我制作 The WebGl Link 时,它显示此错误 WebGL 构建在移动设备上不受支持。立方体赛跑者
- django - 我的表单没有保存使用引导程序在 django 中进行样式设置
- reactjs - 来自 useSelector 的数据导致无限重新渲染为依赖项
- python - 有没有办法在 O(1) 时间复杂度中删除 Python 中字符串的最后一个字符?
- r - 在 R 中对列名使用 mutate
- python - 具有多个键的熊猫数据框到 json
- twilio - WhatsAPP - 通过 Twilio 集成 MS Teams
- neural-network - 如何修复 pytorch 神经网络中不正确的通道大小?