[英]Loop to get time series plots with plotly library
我想使用“ 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
所有圖都引用最后一個變量的原因是plot_ly
函數在循環期間不求值,而只是保留對數據的引用。 這可以通過使用plot_ly
函數中的evaluate
參數來更改。
像這樣修改您的功能代碼,通過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.xx如果您使用plotly
4.xx或更高版本,則此代碼可能無法正常工作。 詳情請參閱此處: https : //www.r-bloggers.com/upgrading-to-plotly-4-0-and-above/
假設每個變量都需要一個圖,則可以執行以下操作:
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
語句中引用該lapply
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.