Использование блестящих входных значений в ggplot aes - PullRequest
1 голос
/ 28 октября 2019

Я пытаюсь реализовать эти 3 строки кода, что является моим желаемым выводом, в Shiny.

install.packages("ggalt")
library(ggalt)

health <- read.csv("https://raw.githubusercontent.com/selva86/datasets/master/health.csv")
health$Area <- factor(health$Area, levels=as.character(health$Area)) # did something for graph 

ggplot(health, aes(x=pct_2013, xend=pct_2014, y=Area))+
    geom_dumbbell()

В Shiny я хочу, чтобы пользователь мог выбирать начальную и конечную точки графа леденца на палочке. Я также хочу, чтобы пользователь мог выбирать категориальную переменную (среди многих категориальных переменных - хотя в настоящее время в данных примера есть только одна категориальная переменная), которая будет отображаться на оси у. Ниже то, над чем я работал до сих пор, буквально заменяя все переменные на входные переменные (так что я думаю, что это должно работать, но это не так ..)

ui<-pageWithSidebar(
  headerPanel('Lollipop Chart'),
  sidebarPanel(
    selectInput('xcol', 'X Variable', names(health), selected=names(health)[1]),
    selectInput('val1', 'Starting Value', names(health), selected=names(health)[3]), 
    selectInput('val2', 'Ending Value', names(health), selected=names(health)[2])   ),
  mainPanel(
    plotOutput('plot1')
  )
)

server<-function(input, output, session) {

   health < read.csv("https://raw.githubusercontent.com/selva86/datasets/master/health.csv")
health$Area <- factor(health$Area, levels=as.character(health$Area)) # did something for graph 

  selectedData <- reactive({
    health[, c(input$xcol, input$val1, input$val2)]
  }) 

  output$plot1 <- renderPlot({
ggplot(selectedData(), aes(x=input$val1, xend=input$val2, y=input$xcol))+
    geom_dumbbell()
  })
}

shinyApp(ui, server)

Может кто-нибудь помочь, почему я не получаю желаемыйвыход? :(

1 Ответ

1 голос
/ 28 октября 2019

Желаемый участок не отображается, потому что вы звоните ggplot по-другому. В вашем блестящем приложении выбранные имена столбцов являются строками:

ggplot(health, aes(x='pct_2013', xend='pct_2014', y='Area'))+
    geom_dumbbell()

Замените aes на aes_string, и оно будет работать.

ggplot(health, aes_string(x='pct_2013', xend='pct_2014', y='Area'))+
       geom_dumbbell()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...