根据数据框中的观察数量自动在 lapply 中设置 ggsave 宽度参数
Automatically set ggsave width argument in lapply based on number of observations in dataframe
假设我有一个数据框列表,我想使用 lapply
和 geom_tile
将它们一个一个地绘制出来,并且 ggsave
它在我的本地计算机上:
library(ggplot2)
df1 <- data.frame(grp = rep("A", 30),
point = 1:30,
y = rep(1, 30),
var = sample(c(T, F), 30, replace = T))
df2 <- data.frame(grp = rep("B", 100),
point = 1:100,
y = rep(1, 100),
var = sample(c(T, F), 100, replace = T))
df_list <- list(df1, df2)
# this should save "A.png" and "B.png" to the current directory
lapply(df_list, function(x) {
p <- ggplot(x, aes(point, y, fill = var)) + geom_tile(color = "black") + theme_minimal()
ggsave(filename = paste0(unique(x[["grp"]]), ".png"), plot = p, width = 8, height = 3)
})
通常情况下,设置 ggsave(width = 8)
对大多数数据帧来说都是完美的,但对于其中一些数据帧来说,它们的观测值异常多,width = 8
会太拥挤。
例如,df1
(A.png) 可以与 width = 8
:
但是,df2
(B.png) 可能太拥挤了:
比如df2
,我想用ggsave(width = 25)
保存。
有没有办法根据我们正在绘制的数据框中的观察数量自动更改ggsave(width)
参数以获得最佳缩放 图(例如,如果数据框有超过 100 个数据点,width
应该大于 25,我希望它自动缩放)?
我知道很难定义最佳缩放,但这里的重点是找到一种方法在每个 lapply
迭代中有不同的 ggsave(width)
.
提前致谢!
我们可以使用ifelse
或case_when
语句根据nrow()
设置宽度。
lapply(df_list, function(x) {
p <- ggplot(x, aes(point, y, fill = var)) +
geom_tile(color = "black") +
theme_minimal()
ggsave(filename = paste0(unique(x[["grp"]]), ".png"),
plot = p,
width = ifelse(nrow(x) > 80, 25, 4),
height = 3)
})
假设我有一个数据框列表,我想使用 lapply
和 geom_tile
将它们一个一个地绘制出来,并且 ggsave
它在我的本地计算机上:
library(ggplot2)
df1 <- data.frame(grp = rep("A", 30),
point = 1:30,
y = rep(1, 30),
var = sample(c(T, F), 30, replace = T))
df2 <- data.frame(grp = rep("B", 100),
point = 1:100,
y = rep(1, 100),
var = sample(c(T, F), 100, replace = T))
df_list <- list(df1, df2)
# this should save "A.png" and "B.png" to the current directory
lapply(df_list, function(x) {
p <- ggplot(x, aes(point, y, fill = var)) + geom_tile(color = "black") + theme_minimal()
ggsave(filename = paste0(unique(x[["grp"]]), ".png"), plot = p, width = 8, height = 3)
})
通常情况下,设置 ggsave(width = 8)
对大多数数据帧来说都是完美的,但对于其中一些数据帧来说,它们的观测值异常多,width = 8
会太拥挤。
例如,df1
(A.png) 可以与 width = 8
:
但是,df2
(B.png) 可能太拥挤了:
比如df2
,我想用ggsave(width = 25)
保存。
有没有办法根据我们正在绘制的数据框中的观察数量自动更改ggsave(width)
参数以获得最佳缩放 图(例如,如果数据框有超过 100 个数据点,width
应该大于 25,我希望它自动缩放)?
我知道很难定义最佳缩放,但这里的重点是找到一种方法在每个 lapply
迭代中有不同的 ggsave(width)
.
提前致谢!
我们可以使用ifelse
或case_when
语句根据nrow()
设置宽度。
lapply(df_list, function(x) {
p <- ggplot(x, aes(point, y, fill = var)) +
geom_tile(color = "black") +
theme_minimal()
ggsave(filename = paste0(unique(x[["grp"]]), ".png"),
plot = p,
width = ifelse(nrow(x) > 80, 25, 4),
height = 3)
})