[英]How to switch between geom_line and geom_bar visualization in ggplot2 in Shiny - R
我希望用戶選擇是否要在圖表上看到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反應幾何線
我想它應該是這樣的:
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')
}
您可以將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 包(v0.2.1) 於 2018 年 10 月 17 日創建
您能否制作兩個圖,然后使用復選框作為條件來確定輸出內容?
output$myPlot <- renderPlot(ifelse(input$checkbox == "bars", myBarPlot, myLinePlot))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.