2017-01-18 1 views
0

에서 plotly (plot.ly)를 사용하여 여러 플롯을 작성합니다. 사용자는 플롯을보고, 입력을 누르면 다음 플롯이 나타납니다.나는 plotly 사용하여 만든 특정 순서로 사용자에게 여러 플롯을 표시하는 함수를 작성하려고 시도하고 R

test_function()가 실행된다
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") 
} 

, 마지막 플롯이 도시되어 여기서 문제를 설명하는 샘플 함수이다. 문제를 해결하기 위해 수행 할 수있는 작업은 무엇입니까?

답변

0

당신이 인쇄 된 단 하나의, 그래서 마지막 플롯이 함수에서 반환 된 경우에만 발견한다.

당신은 print 내에서 모두 plotly 호출을 포함 할 수있다 :

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())