簡體   English   中英

在R中使用plotly(plot.ly)創建多個圖

[英]Create multiple plots using plotly (plot.ly) in R

我正在嘗試編寫一個函數,該函數以使用plotly創建的特定順序向用戶顯示多個圖。 應該讓用戶看到一個圖,然后在按Enter鍵時出現下一個圖。 這是一個示例函數來說明問題:

library(plotly)
test_function <- function(){
  set.seed(100)
  n<-100
  x1 <- runif(n)
  y1 <- runif(n)
  x2 <- runif(n,1,3)
  y2 <- runif(n,1,3)

  plot_ly(x= ~x1,y= ~y1,type = "scatter")
  cat("Hit <Return> to see next plot: ")
  line <- readline()
  plot_ly(x= ~x2, y= ~y2, type = "scatter")
}

執行test_function()時,僅顯示最后一個圖。 如何解決該問題?

如您所見,函數僅返回最后一個圖,因此它是唯一打印的圖。

您可以將兩個plotly調用都嵌入到print

  print(plot_ly(x= ~x1,y= ~y1,type = "scatter"))
  cat("Hit <Return> to see next plot: ")
  line <- readline()
  print(plot_ly(x= ~x2, y= ~y2, type = "scatter"))

但是更好的做法是從函數返回圖,例如使用list並按如下方式組織函數:

test_function <- function(){
  set.seed(100)
  n<-100
  x1 <- runif(n)
  y1 <- runif(n)
  x2 <- runif(n,1,3)
  y2 <- runif(n,1,3)

  p1 <- plot_ly(x= ~x1,y= ~y1,type = "scatter")
  p2 <- plot_ly(x= ~x2, y= ~y2, type = "scatter")
  list(p1,p2) # return the pair of plot
}


show_plots <- function(l){
  print(l[[1]]) # display plot 1
  cat("Hit <Return> to see next plot: ")
  line <- readline()
  print(l[[2]]) # display plot 2
}

show_plots(test_function())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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