Попытка создать блестящий график временных промежутков с помощью ggplot - PullRequest
0 голосов
/ 19 сентября 2019

Я новичок в Shiny и, в качестве упражнения, я пытаюсь оценить глобальные тренды с течением времени, используя набор данных Gapminder.Моя цель состоит в том, чтобы создать базовое приложение, которое позволит мне составлять график ожидаемой продолжительности жизни (lifeExp), численности населения (pop) и ВВП на душу населения (gdpPercap) по времени (году) отдельно.Однако, когда я ввожу следующий код, все, что я получаю, это ggplot с прямой линией.Чего мне не хватает?

Заранее спасибо!

library(shiny)
library(gapminder)
library(dplyr)
library(ggplot2)

ui <- fluidPage(

    selectInput(inputId = "variables",
                label = "Select Variable",
                choices = names(gapminder[, 4:6])),
    plotOutput("plot")

)

server <- function(input, output){

output$plot <- renderPlot({

        data <- gapminder %>% group_by(year) %>%
                              summarise(lifeExp = mean(lifeExp, na.rm = T),
                                        pop = mean(pop, na.rm = T),
                                        gdpPercap = mean(gdpPercap, na.rm = T))

        ggplot(data, aes(x = year, y = input$variables)) + geom_line()

    })    

}

shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 19 сентября 2019

В современных версиях ggplot2 rlang мы можем изменить вызов aes на aes(x = year, y = .data[[input$variables]])) и сделать:

library(shiny)
library(gapminder)
library(dplyr)
library(ggplot2)

ui <- fluidPage(

  selectInput(inputId = "variables",
              label = "Select Variable",
              choices = names(gapminder[, 4:6])),
  plotOutput("plot")

)

server <- function(input, output){

  output$plot <- renderPlot({

    data <- gapminder %>% group_by(year) %>%
      summarise(lifeExp = mean(lifeExp, na.rm = TRUE),
                pop = mean(pop, na.rm = TRUE),
                gdpPercap = mean(gdpPercap, na.rm = TRUE))

    ggplot(data, aes(x = year, y = .data[[input$variables]])) + 
      geom_line()

  })    

}

shinyApp(ui = ui, server = server)

Ссылка: https://ggplot2.tidyverse.org/dev/articles/ggplot2-in-packages.html#using-aes-and-vars-in-a-package-function

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...