Как говорится в сообщении об ошибке, вы используете aes
неправильно.Функция принимает имена столбцов , а не ссылки на переменные.То есть замените
aes(x = output$x, y = output$y)
на
aes(x = x, y = y)
Или, более вероятно, вы захотите иметь возможность управлять графиком из входных данных, поэтому вы захотите использовать
aes_string(x = input$x, y = input$y)
В вашем коде также есть несколько случайных скобок и скобок.Удалить те.Кроме того, mainPanel
- это функция , которую вам нужно вызвать.Вместо этого ваш код присваивает ему что-то.
И, наконец, вам действительно нужно сюжет вашего сюжета.После того, как все это исправлено, соответствующий код выглядит следующим образом:
ui <- fluidPage(
titlePanel("Pig Breeds"),
sidebarLayout(
sidebarPanel(…),
mainPanel(
plotOutput(outputId = "scatterplot")
)
)
)
server <- function(input, output) {
output$scatterplot <- renderPlot({
p = ggplot(data = read.csv("eu_pigs.csv")) +
aes_string(x = input$x, y = input$y) +
geom_point()
plot(p)
observeEvent(input$update, print(as.numeric(input$update)))
})
}
Если объект plot - это последнее, что вы выполняете в функции renderPlot
, вы можете опуститьplot
:
output$scatterplot <- renderPlot({
ggplot(data = read.csv("eu_pigs.csv")) +
aes_string(x = input$x, y = input$y) +
geom_point()
})