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