我正在尝试编写一个函数,向用户显示使用plotly创建的特定顺序的多个图。用户打算查看绘图,然后按下输入时,将显示下一个绘图。 这是一个示例函数来说明问题:
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()时,仅显示最后一个图。 可以做些什么来解决这个问题?
答案 0 :(得分:0)
正如您所注意到的,只有最后一个绘图从您的函数返回,因此它是唯一一个打印的图。
您可以在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())