Scatterplot в Блестящем - PullRequest
       35

Scatterplot в Блестящем

0 голосов
/ 01 марта 2019

Я пытаюсь создать диаграмму рассеяния на основе загруженного CSV, однако, когда я запускаю код, у меня либо не отображается график, либо появляется ошибка, когда я включаю отображение aes: «Отображение должно быть создано с помощью aes() или aes_(). "

Кто-нибудь может подсказать, где я ошибаюсь?

Код:

library(shiny)
library(ggplot2)

ui <- (fluidPage(
titlePanel("Pig Breeds"),
sidebarLayout(
sidebarPanel(
  selectInput(inputId = "x", 
              label = "Pig Breeds:", 
              choices = c("total_pigs", "female_breeding_herd", 
                          "in_pig_sows", "in_pig_gifts", "other_sows", 
                          "maiden_gilts", "boars_for_service", "other_pigs"),
              selected = "total_pigs"),
  selectInput(inputId = "y",
              label = "Year by year change:",
              choices = c(2016, 2017, 2018, "year_on_year_change"),
              selected = 2016),
  actionButton(inputId = "update", label = "update")
            ),
mainPanel = (
  plotOutput(outputId = "scatterplot")
  )
)
)
)

server <- (function(input, output) {
output$scatterplot <- renderPlot({
ggplot(data=(read.csv("eu_pigs.csv")),
            aes(x = output$x, y = output$y) + 
            geom_point())
observeEvent(input$update, {print(as.numeric(input$update))})
       }
    )
  }
 )

shinyApp(ui, server)

1 Ответ

0 голосов
/ 01 марта 2019

Как говорится в сообщении об ошибке, вы используете 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()
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...