Опция для построения графика через selectInput с цитатами - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь сгенерировать ggplot, выбирая переменную "position" с помощью selectInput, которая содержит кавычку внутри.

Я пробовал с paste0 или с комбинацией различий "и", не повезло.

на стороне ui.R:

selectInput("posicion","Visualizar Barras",
     list ("Agrupadas"= 'position_dodge2(preserve = "single")',
       "Sumadas"="stack")))

на стороне server.R:

output$g_virus_x_semana.1 <- renderPlot({
      ggplot(subset(v,  v$año==input$año.1 & Virus %in% input$virus), aes(semana, fill=Virus))+
        geom_bar(position = input$posicion, stat = "count")+
        scale_x_discrete(drop=FALSE)+
        scale_fill_virus()+theme_dark()+labs(y = "N° de virus identificados", x= "Semana")

Если я выберу «Agrupadas», я получу: Error in : Can't find `position` called "position_dodge2(preserve = "single")"

Работает как шарм, если поставить position_dodge2(preserve = "single") direct в секции кода de ggplot.

1 Ответ

1 голос
/ 09 мая 2019

Один из вариантов - создать реактивную функцию, основанную на input$posicion, чтобы изменить слой, добавляемый на график.

Ваш selectInput() может выглядеть как

selectInput(inputId = "posicion", label = "Visualizar barras",
                                    choices = list("Agrupadas",
                                                   "Sumadas") )

Затем в server вы можете добавить информацию о том, какой слой добавить на график, основываясь на сделанном выборе. Обратите внимание, что весь слой хранится в списке для добавления на график.

server = function(input, output) {

    bartype = reactive({
        if(input$posicion == "Agrupadas") {                     
            list( geom_bar(position = position_dodge(preserve = "single"), stat = "count") )
            }
        else {
            list( geom_bar(position = "stack", stat = "count") )
        }
    })

    # Create scatterplot object the plotOutput function is expecting
    output$lineplot = renderPlot({
        ggplot(mtcars, aes(factor(gear), fill = factor(cyl) ) ) +
            bartype()
    })

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