Угадайте корреляцию - есть ли функция R в блестящем, чтобы показать следующий график? сбор данных с блестящими - PullRequest
0 голосов
/ 17 июня 2019

Я хочу показать три разных графика рассеяния с помощью следующей кнопки. задача состоит в том, чтобы угадать силу корреляции в каждом сюжете. проблема в том, что я вижу только один и тот же сюжет. Я пытаюсь работать со следующей кнопкой, чтобы увидеть следующий график.

library(shiny)

# 3 different dataframes/data for scatter plots
data1 <- data.frame(a <- c(20,30,35,45,50,60,80),
                    b <- c(60,70,72,77,82,88,90))
data2 <- data.frame(a <- c(20,30,35,45,50,60,80),
                    b <- c(60,70,68,77,82,88,70))
data3 <- data.frame(a <- c(35,40,38,50,52,51,30),
                    b <- c(60,70,72,64,82,88,90))

ui = fluidPage(
  sidebarPanel(
    sliderInput
    (inputId = "fit", label = "estimated correlation",
     min = 0, max = 1,     value = 0),
     actionButton("newplot", "next")),
  mainPanel(plotOutput("plot")))

server = function(input, output) {
output$plot <- renderPlot({
input$newplot
plot(data1)
plot(data2)
plot(data3)
  })
  }

shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 18 июня 2019

Я не верю, что есть какие-то встроенные способы сделать это, но вы можете легко сохранить переменную для отслеживания графика, который вы хотите показать, а затем использовать switch(), чтобы нарисовать только этот график. Например

cycle <- function(x, max) {
  if(x() < max) {
    x(x() + 1)
  } else {
    x(1)
  }
}

server <- function(input, output) {
  index <- reactiveVal(1)
  observeEvent(input$newplot, {
    cycle(index, 3)
  })
  output$plot <- renderPlot({
    switch(index(),
      plot(data1),
      plot(data2),
      plot(data3)
    )
  })
}

Здесь я только что написал вспомогательную функцию cycle, чтобы упростить возврат к 1 при увеличении индекса. Но в основном это просто значение от 1 до 3. Затем в renderPlot он смотрит текущий индекс и рисует только этот график.

...