我正在尝试生成一个ggplot,它通过selectInput来选择其中的引号,以选择“ position”变量。
我尝试使用paste0或“和”的不同组合,很幸运。
在ui.R端:
selectInput("posicion","Visualizar Barras",
list ("Agrupadas"= 'position_dodge2(preserve = "single")',
"Sumadas"="stack")))
在服务器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")
直接放在ggplot代码部分,则就像魅力一样。
答案 0 :(得分:1)
一种选择是基于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()
})
}