Shiny не отображает данные ggplot

#r #ggplot2 #shiny

#r #ggplot2 #блестящий

Вопрос:

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

Спасибо,

Код:

 ui <- fluidPage(
     sidebarLayout(
         sidebarPanel(
             selectInput(inputId = "y", 
                         label = "Y-axis:", 
                         choices = c("P-value", "P-adjust"),
                         selected = "P-adjust"),
             selectInput(inputId = "x" , 
                         label = "X-axis:", 
                         choices = c("FC", "Mean_Count_PD"),
                         selected = "FC")
                 ),
         mainPanel(plotOutput(outputId = "scatterplot"))
         ))

server <- function(input, output) 
     {
     output$scatterplot <- renderPlot({
     ggplot(data = mir, aes(input$x,input$y))   geom_point()
     })
 }
  

Ответ №1:

Проблема в том, что вы должны сообщить ggplot, что ваши input s являются именами переменных в вашем наборе данных. Это может быть достигнуто, например, путем использования .data местоимения, т. Е. Вместо использования input$x which просто используется строка .data[[input$x]] , которая сообщает ggplot, что под input$x вами подразумевается переменная с таким именем в ваших данных:

Поскольку вы не предоставили никаких данных, я не мог проверить, но это должно дать вам желаемый результат:

 library(shiny)
library(ggplot2)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput(inputId = "y", 
                  label = "Y-axis:", 
                  choices = c("P-value", "P-adjust"),
                  selected = "P-adjust"),
      selectInput(inputId = "x" , 
                  label = "X-axis:", 
                  choices = c("FC", "Mean_Count_PD"),
                  selected = "FC")
    ),
    mainPanel(plotOutput(outputId = "scatterplot"))
  ))

server <- function(input, output) {
  output$scatterplot <- renderPlot({
    ggplot(data = mir, aes(.data[[input$x]], .data[[input$y]]))   geom_point()
  })
}

shinyApp(ui, server)
  

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

1. Спасибо, это сработало. Другим способом заставить его работать было передать aes_string() в ggplot вместо aes().