使用 ggplot2 和 lapply 为列表中的元素分隔图表
Separate charts for element in list using ggplot2 and lapply
好的,伙计们,我需要帮助在列表(使用 lapply)循环中使用 ggplot2 来为列表的每个元素获取单独的图表。
我是 R 的新手,所以请原谅菜鸟。
假设我有这样一个数据框:
df <- cbind.data.frame(Time = c(1,2,3,4,1,2,3,4),
Person = c("A","A","A","A","B","B","B","B"),
Quantity = c(1,4,6,8,1,6,2,10))
df <- data.table(df)
> df
Time Person Quantity
1: 1 A 1
2: 2 A 4
3: 3 A 6
4: 4 A 8
5: 1 B 1
6: 2 B 6
7: 3 B 2
8: 4 B 10
我想分别为 A 和 B 制作图表。
目前我的功能设置如下:
Persons = c("A","B")
PersonList = as.list(Persons)
MyFunction <- function(x){
SubsetPersons = Persons[!(Persons %in% x)]
df <- df[!(df$Person %in% SubsetPersons)]
g <- ggplot(data=df, aes(x=Time, y=Quantity))
g <- g + geom_line()
print(g)
}
Results <- lapply(Persons, MyFunction)
但是我不知道如何保存对应列表元素的不同名称的图表?
注意:我知道这个函数可能看起来是解决这个问题的一种奇怪方法,但对于我手头上更大更复杂的问题来说,它是必需的。
我只是想弄清楚如何为列表中的图表保存不同的名称!
提前致谢!
Persons = c("A","B")
MyFunction <- function(x){
dfs <- df[df$Person == x,]
g <- ggplot(data=dfs, aes(x=Time, y=Quantity))
g <- g + geom_line()
#have added extra bracket after ".PNG"
ggsave(paste0("plot_for_person", x, ".PNG"), g)
print(g)
return(g)
}
Results <- lapply(Persons, MyFunction)
好的,伙计们,我需要帮助在列表(使用 lapply)循环中使用 ggplot2 来为列表的每个元素获取单独的图表。 我是 R 的新手,所以请原谅菜鸟。
假设我有这样一个数据框:
df <- cbind.data.frame(Time = c(1,2,3,4,1,2,3,4),
Person = c("A","A","A","A","B","B","B","B"),
Quantity = c(1,4,6,8,1,6,2,10))
df <- data.table(df)
> df
Time Person Quantity
1: 1 A 1
2: 2 A 4
3: 3 A 6
4: 4 A 8
5: 1 B 1
6: 2 B 6
7: 3 B 2
8: 4 B 10
我想分别为 A 和 B 制作图表。 目前我的功能设置如下:
Persons = c("A","B")
PersonList = as.list(Persons)
MyFunction <- function(x){
SubsetPersons = Persons[!(Persons %in% x)]
df <- df[!(df$Person %in% SubsetPersons)]
g <- ggplot(data=df, aes(x=Time, y=Quantity))
g <- g + geom_line()
print(g)
}
Results <- lapply(Persons, MyFunction)
但是我不知道如何保存对应列表元素的不同名称的图表?
注意:我知道这个函数可能看起来是解决这个问题的一种奇怪方法,但对于我手头上更大更复杂的问题来说,它是必需的。 我只是想弄清楚如何为列表中的图表保存不同的名称!
提前致谢!
Persons = c("A","B")
MyFunction <- function(x){
dfs <- df[df$Person == x,]
g <- ggplot(data=dfs, aes(x=Time, y=Quantity))
g <- g + geom_line()
#have added extra bracket after ".PNG"
ggsave(paste0("plot_for_person", x, ".PNG"), g)
print(g)
return(g)
}
Results <- lapply(Persons, MyFunction)