我希望用户选择是否要在图形上看到geom_line
或geom_bar
。
使用checkboxGroupInput
最好的方法是什么?
假设我有geom_line
的情节:
ggplot(regiao, aes(x=Ano,fill=Regiao, color=Regiao))+
geom_line(stat='count')
和带有geom_bar
的那个:
ggplot(regiao, aes(x=Ano,fill=Regiao, color=Regiao))+
geom_bar()+
stat_count()
我想知道如何为ggplot设置参数。
我到处搜索,但只能找到值的反应函数,而不是参数,像这样: ggplot2 with reactive Geom lines
我想它应该像这样:
ggplot(regiao, aes(x=Ano,fill=Regiao,color=Regiao))+
if (input$checkbox == "bars") {
+ geom_bar()+
stat_count()
}
if (input$checkbox=="lines") {
+geom_line(stat='count')
}
答案 0 :(得分:2)
您可以将ggplot
对象保存到变量中,并根据需要在其上构建。在Shiny上下文之外,您可以通过引用变量或将添加任务添加到函数中的ggplot
上来完成此操作。在Shiny上下文中,您可以根据用户输入来决定要添加到对象中的内容。
例如,在普通的R上下文中:
library(ggplot2)
set.seed(123)
df <- data.frame(
month = 1:10,
value = runif(10)
)
创建基础ggplot
对象。例如,我还指定了y比例尺,因为ggplot
元素(例如geoms和scales)不必以任何顺序添加。您可能有某种规格,例如可以容纳的刻度,而与几何类型无关。
plot_base <- ggplot(df, aes(x = month, y = value)) +
scale_y_continuous(labels = scales::percent)
然后根据绘图类型添加几何图形。在Shiny应用程序中,它应该是input$plot_type
,并采用一对单选按钮或其他一些输入的值。该决策将在您的渲染函数中进行,例如renderPlot
。
plot_type <- "Line"
if(plot_type == "Line") {
p <- plot_base +
geom_line()
} else {
p <- plot_base +
geom_col()
}
p
相同的逻辑适用于条/列。您只是不必再次执行if / else,它会在用户更改输入时以反应方式重新运行。
plot_type <- "Bar"
if(plot_type == "Line") {
p <- plot_base +
geom_line()
} else {
p <- plot_base +
geom_col()
}
p
由reprex package(v0.2.1)于2018-10-17创建
答案 1 :(得分:0)
您能否同时绘制两个图,然后使用复选框作为确定输出内容的条件?
default_margin