簡體   English   中英

循環使用plotly庫獲取時間序列圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM