2014-11-21 11 views
5

Tôi đang cố tạo một số bản trình diễn cho lớp stat của mình. Trong số những thứ khác tôi muốn thể hiện quá trình từng bước liên quan. Đối với một ví dụ đơn giản về những gì tôi đang tìm kiếm xem xét các chức năng ít đồ chơi R sau:Cách thêm các phần vào biểu đồ từng cái một trong bóng

toyPlot <- function() { 
    x <- 1:100/100 
    y <- x+rnorm(100,0,0.2) 
    plot(x,y) 
    Sys.sleep(2) 
    abline(lm(y~x)) 
    Sys.sleep(2) 
    title(main="Fitted Line Plot") 
} 

Nó vẽ một phân tán, chờ đợi hai thứ hai, thêm dòng LSR, đợi hai giây và sau đó thêm tiêu đề.

Bây giờ, khi tôi làm như vậy trong sáng nó chờ đầy 4 giây và sau đó làm đồ thị đầy đủ cùng một lúc.

Tôi đã dành thời gian tìm kiếm giải pháp và tìm thấy một số lệnh hữu ích (phiên $ onFlushed, invalidateLater, reactiveTimer) nhưng tôi không thể nhận bất kỳ lệnh nào để làm những gì tôi muốn.

+1

Có rất quan trọng để làm điều này sau một khoảng thời gian nhất định? Hoặc bạn có thể bật và tắt các phần của đồ thị theo ý muốn không? –

Trả lời

4

Tại sao không ràng buộc đầu ra của bản vẽ với giá trị của thanh trượt hoạt ảnh? Bạn có thể kiểm soát thời lượng của từng giai đoạn với animationOptions.

ui <- fixedPage(
    plotOutput('myplot'), 
    sliderInput('myslider', 'Steps', min=1, max=3, value=1, animate=animationOptions()) 
) 


server <- function(input, output, session) { 

    x <- 1:100/100 
    y <- x + rnorm(100, 0, 0.2) 

    pfs <- list(
     function() plot(x, y) , 
     function() abline(lm(y~x)), 
     function() title(main='Fitted line plot') 
    ) 

    output$myplot <- renderPlot({ 
     for (i in 1:input$myslider) pfs[[i]]() 
    }) 

} 

runApp(list(ui=ui, server=server)) 
+0

Câu trả lời hay ... :) – jdharrison

+0

Đó chính xác là những gì tôi cần. Cảm ơn! –

0

Dưới đây là một cách để làm điều đó giả định rằng các thành phần bật và tắt có thể chấp nhận được. Trong số ui.r, bạn nên thêm điều khiển (hiện tại là chekcboxInput sẽ làm) để bật và tắt các phần tử. Mã này sẽ

checkboxInput(inputId="lineCheck", label = "Show line?", value =FALSE), 

checkboxInput(inputId="titleCheck", label = "Show title?", value =FALSE), 

Sản lượng cốt truyện bạn sẽ là:

toyPlot <- renderPlot({ 
    x <- 1:100/100 
    y <- x+rnorm(100,0,0.2) 
    plot(x,y) 
    if(input$lineCheck){ abline(lm(y~x))} 
    if(input$titleCheck){ title(main="Fitted Line Plot")} 
} 

Bạn có thể thêm thanh trượt cho các phạm vi cho các trục, Dropdowns cho lựa chọn màu sắc, biểu tượng vv vv

Các vấn đề liên quan