R — построить реактивное подмножество с плотностью

#r #shiny #plotly #subset #reactive

#r #блестящий #плотный #подмножество #реактивное

Вопрос:

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

 
structure(list(WEG = c(0, 0.01, 0.02, 0.02, 0.03, 0.04), VERTIKAL_KRAFT_FY = c(358.77, 
358.78, 358.78, 358.79, 358.79, 358.8), VERSCHIEBEKRAFT_FX = c(0, 
0, 0, 0, 0, 0), HD = c(-9.39, -9.39, -9.41, -9.36, -9.36, -9.38
), PROBE_NR = c(6812L, 6812L, 6812L, 6812L, 6812L, 6812L), ZYKLUS = c(101L, 
101L, 101L, 101L, 101L, 101L)), row.names = c(NA, 6L), class = "data.frame")




ui <- fluidPage(
  selectInput("Select1","Select Test",unique(d$PROBE_NR)),
  selectInput("Select2","Select Cycle",choices = NULL)

  mainPanel(
    tableOutput("view"),
    plotlyOutput('plot'),
  )
  
)


server <- function(input, output,session) {
  
  
  observeEvent(input$Select1,{
    updateSelectInput(session,'Select2',
                      choices=unique(d$ZYKLUS[d$PROBE_NR==input$Select1]))
  })
  
  newData <- reactive({
    t <- subset(d, d$PROBE_NR == input$Select1 amp; d$ZYKLUS %in% input$Select2) #subset
    return(t)
  })
  
  output$view <- renderTable({ newData() }) 
  
  output$plot <- renderPlotly({
    
    data = newData()
    plot<-plot_ly(data, color = ~source, x = ~WEG, y = ~HD, mode = "lines", type = "scatter") %>% 
      layout( xaxis = list( title=input$Selectx), 
              yaxis = list( title=input$Selecty ), title = "Plot1" )
    plot
  })
  
  
}

shinyApp(ui = ui, server = server)

  

Я хотел бы взять несколько столбцов подмножества t, чтобы построить их.

Это мой фрейм данных, я выбираю ЗОНД и циклус и создаю подмножество quot;tquot;, из этого подмножества я хотел бы создать линейный график со столбцом WEG в качестве оси x и HD в качестве оси Y

Комментарии:

1. Пожалуйста, предоставьте воспроизводимый пример.

2. @ismirsehregal только что обновил описание

3. Пожалуйста, используйте dput для предоставления примеров.

4. @Florian uodated

Ответ №1:

Столбец, source указанный в качестве color аргумента plotly, не существует в вашем data.frame . Пожалуйста, проверьте следующее:

 library(shiny)
library(plotly)

d <- structure(
  list(
    WEG = c(0, 0.01, 0.02, 0.02, 0.03, 0.04),
    VERTIKAL_KRAFT_FY = c(358.77,
                          358.78, 358.78, 358.79, 358.79, 358.8),
    VERSCHIEBEKRAFT_FX = c(0,
                           0, 0, 0, 0, 0),
    HD = c(-9.39, -9.39, -9.41, -9.36, -9.36, -9.38),
    PROBE_NR = c(6812L, 6812L, 6812L, 6812L, 6812L, 6812L),
    ZYKLUS = c(101L,
               101L, 101L, 101L, 101L, 101L)
  ),
  row.names = c(NA, 6L),
  class = "data.frame"
)

ui <- fluidPage(
  selectInput("Select1", "Select Test", unique(d$PROBE_NR)),
  selectInput("Select2", "Select Cycle", choices = NULL),
  mainPanel(tableOutput("view"),
            plotlyOutput("plot"))
)


server <- function(input, output, session) {
  observeEvent(input$Select1, {
    updateSelectInput(session, 'Select2',
                      choices = unique(d$ZYKLUS[d$PROBE_NR == input$Select1]))
  })
  
  newData <- reactive({
    subset(d, d$PROBE_NR == input$Select1 amp; d$ZYKLUS %in% input$Select2)
  })
  
  output$view <- renderTable({
    newData()
  })
  
  output$plot <- renderPlotly({
    plot_ly(
      data = newData(),
      # color = ~ source,
      x = ~ WEG,
      y = ~ HD,
      mode = "lines",
      type = "scatter"
    ) %>%
      layout(
        xaxis = list(title = input$Selectx),
        yaxis = list(title = input$Selecty),
        title = "Plot1"
      )
  })
  
}

shinyApp(ui = ui, server = server)
  

Результат