這是一個示例資料集:
Group<-c("Blue","Red","Green","Blue","Red","Green")
UV<-c("3","4","2","5","4","6")
Rain<-c("10","11","12","15","16","17")
dmean<-data.frame(Day,Group,UV,Rain)
Day<-c("1","1","1","1","1","1","2","2","2","2","2","2",)
Group<-c("Blue","Blue","Red","Red","Green","Green","Blue","Blue","Red","Red","Green","Green")
UV<-c("3","3.1","4","4.1","2","2.2","5","5.1","4","4.2","6.1","6.1")
Rain<-c("10","10.1","11","11","12","12.2","15","15.2","16","16.1","17","17.2")
dpoints<-data.frame(Day,Group,UV,Rain)
基本上,我有一個包含多個變數的大型資料集,在這個例子中,“UV”和“Rain”我按“Day”和“Group”分組。我想為每一列生成一個圖,例如“UV”和“Rain”使用幾何線連接來自“dmean”的平均值,以及“dpoints”中的資料點,使用如下函式可能不正確并且不完整:
plot.ts <- function(d){
ggplot(dmean, aes(x = Day, y = col.num 2, group = Group, colour = Group))
geom_line(size = 1)
geom_point(dpoints, aes(y = d0[,col.num 2]),
alpha = .2)
facet_wrap(~Group,
ncol = 1)
ggsave(paste0("plot1_",col.num,".png"), width = 15, height = 10, dpi = 300, units = "in", device='png')
}
這是“UV”的示例圖,我也希望與其他變數一起生成。
有人可以檢查該功能并通過列應用該功能嗎?
uj5u.com熱心網友回復:
為了達到你想要的結果,你必須對你的功能做一些調整。首先,我創建plot.ts了一個函式,它接受一個引數,即要映射的列的名稱y。其次,在里面ggplot()我使用.data了包中的代詞,rlang它允許使用列名作為ggplot. 之后,您可以使用lapply回圈遍歷所需列的串列來創建繪圖:
library(ggplot2)
plot.ts <- function(yvar) {
ggplot(dmean, aes(x = Day, y = .data[[yvar]], group = Group, colour = Group))
geom_line(size = 1)
geom_point(data = dpoints, aes(y = .data[[yvar]]), alpha = .2)
facet_wrap(~Group, ncol = 1)
labs(title = yvar)
#ggsave(paste0("plot1_",col.num,".png"), width = 15, height = 10, dpi = 300, units = "in", device='png')
}
lapply(c("UV", "Rain"), plot.ts)
#> [[1]]

#>
#> [[2]]

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/462750.html
