gpt4 book ai didi

r - 自定义函数中的 for 循环以创建 ggplot 时间序列图

转载 作者:行者123 更新时间:2023-12-04 13:21:32 26 4
gpt4 key购买 nike

我很难尝试使用 for 循环创建一个函数,该函数采用数据框中的列并根据列名创建不同的图。例如,我已经阅读了多个关于 SO 的不同相关问题,
1 :Creating function to use loops with ggplot2 [2]:Looping over variables in ggplot
但到目前为止没有任何东西对我有用。

样本数据:

philly_df_new <- structure(list(DATE = structure(c(14610, 14611, 14612, 14613, 
14614, 14615, 14616, 14617, 14618, 14619, 14620, 14621, 14622,
14623, 14624, 14625, 14626, 14627, 14628, 14629), class = "Date"),
HOURLYDewPointTempC = c(0, -8.9, -15, -12.2, -11.7, -10.6,
-8.3, -4.4, -12.2, -17.2, -12.8, -6.1, -10.6, -7.8, -5.6,
-2.2, 0.6, 3.9, 0.6, -3.3), HOURLYSeaLevelPressure = c(30,
29.79, 29.78, 29.76, 29.81, 29.78, 29.89, 29.87, 29.98, 30.25,
30.27, 30.13, 30.22, 30.23, 30.21, 30.23, 30.14, 29.49, 29.95,
29.92), DAILYDeptFromNormalAverageTemp = c(-1.7, 2.4, -6.4,
-10.3, -6.2, -5.1, -1, -1, -5.9, -10.8, -11.8, -9.7, -3.7,
-1.7, -1.6, 4.4, 4.4, 6.4, 8.4, 4.3)), .Names = c("DATE",
"HOURLYDewPointTempC", "HOURLYSeaLevelPressure", "DAILYDeptFromNormalAverageTemp"
), row.names = c(NA, -20L), class = c("tbl_df", "tbl", "data.frame"
))

我尝试过的不同代码:
Plot_Graph<-function(x,na.rm=T){
nm=names(x)
for (i in seq_along(nm)) {
print(ggplot(x,aes_string(x="DATE",y=i) +
geom_point()))
}
}

Plot_Graph(philly_df_new)
colNames <- names(philly_df_new)[2:4]
for(i in seq_along(colNames)){
plt <- ggplot(philly_df_new, aes_string(x="DATE", y = i)) +
geom_point(color="#B20000", size=3, alpha=0.5,na.rm = T)
print(plt)
}

当我运行第一个函数时,我收到此错误消息
Error: Mapping should be created with aes() or aes_()。当我运行第二个函数时,我会得到一个带有水平线的相同图的图。我尝试了更多的方法,但为了最小的目的,我将展示这两个。我想为每一列创建一个时间序列图,如下所示:
enter image description here

最佳答案

以下作品。
您正在循环所有列,包括列 "DATE" ,它应该是 x 轴,循环变量是整数,所以在情节的美学 y = i是一个整数,而不是列名。

请注意,我调用 windows()打开一个新的图形窗口。如果不需要,请删除它。

Plot_Graph <- function(DF, na.rm = TRUE){
nm = names(DF)[-1]
for (i in nm) {
g <- ggplot(DF, aes(x = DATE, y = get(i))) +
geom_point()
windows()
print(g)
}
}

Plot_Graph(philly_df_new)

关于r - 自定义函数中的 for 循环以创建 ggplot 时间序列图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com