r - ActionButton 在闪亮的 r 中添加/删除错误栏?
问题描述
我有一个 R Shiny 脚本,我想使用actionButton
. 这是我到目前为止开发的数据和代码,但我正在努力使用带有 geom_errorbar 的 linkung actionButton
library(shiny)
library(ggplot2)
library(dplyr)
ui <- fluidPage(theme = shinytheme("darkly"),
titlePanel("Stream Metabolism (open-channel, single-station)"),
sidebarLayout(
sidebarPanel(
# Select type of trend to plot
selectInput(inputId = "Name", label = strong("Site Name"),
choices = unique(stack_data1$Name),
selected = "Waimea Stream at Mandeville"),
# Select date range to be plotted
dateRangeInput("date", strong("Date range"), start = "2019-01-15", end = "2019-01-28",
min = "2007-01-01", max = "2050-07-31"),
# Select whether to overlay smooth trend line
checkboxInput(inputId = "smoother", label = strong("Overlay smooth trend line"), value = FALSE),
# Display only if the smoother is checked
actionButton("add_btn", "Add error bars"),
actionButton("rm_btn", "Remove error bars"),
textOutput("counter")
),
# Output: Description, lineplot, and reference
mainPanel(h3("Gross primary productivity (GPP)"),plotOutput(outputId = "lineplot1", height = "300px"),
h3("Ecosystem respiration (ER)"),
plotOutput(outputId = "lineplot2", height = "300px"),
)
)
)
server <- function(input, output) {
# Subset data
selected_trends <- reactive({
stack_data1 %>% filter(Name==input$Name)})
# Create scatterplot object the plotOutput function is expecting
output$lineplot1 <- renderPlot({
ggplot(selected_trends(),aes(x=selected_trends()$date,y=selected_trends()$GPP.daily)) +
geom_line(stat="identity") + geom_errorbar(aes(ymin=GPP.daily-GPP.se, ymax=GPP.daily+GPP.se))
})
output$lineplot2 <- renderPlot({
ggplot(selected_trends(),aes(x=selected_trends()$date,y=selected_trends()$ER.daily)) +
geom_line(stat="identity") + geom_errorbar(aes(ymin=ER.daily-ER.se, ymax=ER.daily+ER.se))
})
}
shinyApp(ui = ui, server = server)
数据:
stack_data1 <- structure(list(Name = c("Waimea", "Waimea", "Waimea", "Waimea",
"Waimea", "Waimea", "Mandiville", "Mandiville", "Mandiville",
"Mandiville", "Mandiville", "Mandiville"), GPP.daily = c(2.117490461,
2.691075696, 1.84678193, 2.198962707, 1.112202786, 2.022502917,
2.449018167, 2.751946861, 1.170689454, 2.346309621, 2.727397795,
2.680414728), GPP.se = c(0.1, 0.9, 0.5, 0.2, 0.3, 0.1, 0.9, 0.5,
0.2, 0.3, 0.2, 0.1), ER.daily = c(-4.641115676, -5.928219632,
-4.229082781, -4.313901881, -2.319110803, -5.025002375, -5.656338405,
-5.686842614, -2.43665092, -4.87119492, -5.669055542, -6.893142768
), ER.se = c(1, 2, 1.2, 1.4, 0.8, 0.6, 0.9, 1, 0.2, 0.7, 1.5,
1.3), date = structure(c(1547463600, 1547550000, 1547636400,
1547722800, 1547809200, 1547895600, 1547463600, 1547550000, 1547636400,
1547722800, 1547809200, 1547895600), class = c("POSIXct", "POSIXt"
), tzone = "")), row.names = c(NA, 12L), class = "data.frame")
任何人都可以帮忙吗?
解决方案
您可以使用radioButton
看起来更适合您需求的 a :
library(shiny)
library(ggplot2)
library(dplyr)
stack_data1 <- structure(list(Name = c("Waimea", "Waimea", "Waimea", "Waimea",
"Waimea", "Waimea", "Mandiville", "Mandiville", "Mandiville",
"Mandiville", "Mandiville", "Mandiville"), GPP.daily = c(2.117490461,
2.691075696, 1.84678193, 2.198962707, 1.112202786, 2.022502917,
2.449018167, 2.751946861, 1.170689454, 2.346309621, 2.727397795,
2.680414728), GPP.se = c(0.1, 0.9, 0.5, 0.2, 0.3, 0.1, 0.9, 0.5,
0.2, 0.3, 0.2, 0.1), ER.daily = c(-4.641115676, -5.928219632,
-4.229082781, -4.313901881, -2.319110803, -5.025002375, -5.656338405,
-5.686842614, -2.43665092, -4.87119492, -5.669055542, -6.893142768
), ER.se = c(1, 2, 1.2, 1.4, 0.8, 0.6, 0.9, 1, 0.2, 0.7, 1.5,
1.3), date = structure(c(1547463600, 1547550000, 1547636400,
1547722800, 1547809200, 1547895600, 1547463600, 1547550000, 1547636400,
1547722800, 1547809200, 1547895600), class = c("POSIXct", "POSIXt"
), tzone = "")), row.names = c(NA, 12L), class = "data.frame")
ui <- fluidPage(
titlePanel("Stream Metabolism (open-channel, single-station)"),
sidebarLayout(
sidebarPanel(
# Select type of trend to plot
selectInput(inputId = "Name", label = strong("Site Name"),
choices = unique(stack_data1$Name),
selected = "Waimea Stream at Mandeville"),
# Select date range to be plotted
dateRangeInput("date", strong("Date range"), start = "2019-01-15", end = "2019-01-28",
min = "2007-01-01", max = "2050-07-31"),
# Select whether to overlay smooth trend line
checkboxInput(inputId = "smoother", label = strong("Overlay smooth trend line"), value = FALSE),
# Display only if the smoother is checked
radioButtons("err_bar", "Error bar",
c("With error bar" = "yes",
"No error bar" = "no")),
textOutput("counter")
),
# Output: Description, lineplot, and reference
mainPanel(h3("Gross primary productivity (GPP)"),plotOutput(outputId = "lineplot1", height = "300px"),
h3("Ecosystem respiration (ER)"),
plotOutput(outputId = "lineplot2", height = "300px"),
)
)
)
server <- function(input, output) {
# Subset data
selected_trends <- reactive({
stack_data1 %>% filter(Name==input$Name)})
# Create scatterplot object the plotOutput function is expecting
output$lineplot1 <- renderPlot({
p <- ggplot(selected_trends(),aes(x=selected_trends()$date,y=selected_trends()$GPP.daily)) +
geom_line(stat="identity")
if (input$err_bar=="yes") { p <- p+ geom_errorbar(aes(ymin=GPP.daily-GPP.se, ymax=GPP.daily+GPP.se))}
p
})
output$lineplot2 <- renderPlot({
p <- ggplot(selected_trends(),aes(x=selected_trends()$date,y=selected_trends()$ER.daily)) +
geom_line(stat="identity")
if (input$err_bar=="yes") { p <- p + geom_errorbar(aes(ymin=ER.daily-ER.se, ymax=ER.daily+ER.se))}
p
})
}
shinyApp(ui = ui, server = server)
推荐阅读
- php - 如何在刀片视图中呈现 xml svg 响应
- vue.js - VueJS 路由器 - 使用子路由和 Vuetify 时如何停止多个活动路由?
- python - 是否有任何原因导致基于 boosting 的模型特别难以实现多输出回归函数?
- sql - 按分组计算具有最大值的行
- java - 嵌套 RecyclerView 中的特定项目在滚动之前不会加载
- ruby - Enumerable#sum 如何避免浮点舍入错误?
- flutter - 如何使用 http.delete Flutter 删除数据
- reporting-services - 此代码对字段中没有值的记录给出错误,但对在字段中具有值的记录给出良好的结果
- android - 谷歌对 IBM MobileFirst 应用中心的新限制
- python-3.x - 我怎么能关闭 tqdm_gui?