我想使用“plotly”库来获取data.frame
中每个数字变量的几个时间序列图。我不知道为什么,但所有的情节都是指最后一个。
以下是我的尝试:
install.packages("plotly", repos="http://cran.rstudio.com/")
library("plotly")
dfdata <- apply(economics[,2:6], 2, scale)
df1 <- data.frame(dfdata, economics$date)
plotting <- function(data) {
a <- list()
for (i in 1:5) {
nam <- paste("p", i, sep = "")
nam <- plot_ly(data, x = economics.date, y = data[,i])
a[[i]] <- nam
}
return(a)
}
b <- plotting(df1)
b
答案 0 :(得分:1)
所有绘图引用最后一个变量的原因是plot_ly
函数在循环期间不进行评估,而只是保留对数据的引用。可以使用evaluate
函数中的plot_ly
参数更改此设置。
像这样修改你的功能代码,plotting
返回的列表中的每个条目现在都不同了。
plotting <- function(data) {
a <- list()
for (i in 1:5) {
nam <- paste("p", i, sep = "")
nam <- plot_ly(data, x = economics.date, y = data[,i], evaluate = TRUE)
a[[i]] <- nam
}
return(a)
}
编辑:
此示例使用plotly
3.x.x.如果您使用plotly
4.x.x或更高版本,则此代码可能无法正常工作。有关详情,请参阅此处:https://www.r-bloggers.com/upgrading-to-plotly-4-0-and-above/
答案 1 :(得分:0)
假设您想为每个变量创建一个图表,您可以执行以下操作:
b <- lapply(setdiff(names(df1), "economics.date"), function(x) {
plot_ly(df1, x = df1[["economics.date"]], y = df1[[x]])
})
b
setdiff(names(df1), "economics.date")
为我们提供了每个其他列的向量,我们可以在lapply
语句中引用它。