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