r - 闪亮:将滑块与在图中单击的组相关联
问题描述
更新
我想我设法让它工作了——至少现在我知道如何从点击点获取组信息。看到这个gist
介绍
我正在构建一个闪亮的应用程序,我想在其中显示给定团队处理的所有产品的积压量。积压由两个因素驱动:进出的new
项目数量,特定于每个产品。closed
此外,每个产品都有一个关联的productivity
值(在应用程序的不同部分需要)。
问题
我希望能够:1)单击特定产品并查看被过滤到所选产品的表格,然后
2) 通过调整仅适用于选定产品的 和 % 滑块来new
修改closed
基本假设。productivity
3)这些基本假设的变化将反映在情节中。
这背后的建议规则可以在react_df()
定义的注释部分找到。该图可以使用任何shiny
友好的包构建,不一定是ggplot2
.
我试过的
我是新来的闪亮。我尝试使用tooltip
功能并开始研究plotOutput
与双击相关的操作的参数,但无法使其工作:交互式绘图上 RStudio 资源中显示的示例(例如,这个或这个使用散点图并检索 x 或 y 值而不是组信息。你可以gist
在这里看到我的。
欢迎任何有用的提示!
应用程序
library(shiny)
library(shinydashboard)
library(dplyr)
library(ggplot2)
library(DT)
new_vals <- c(50, 100, 200)
data <- data.frame(
date = rep(as.Date(c('2018-01-01', '2018-02-01', '2018-03-01')), 4),
country = c(rep('UK', 3), rep('US', 9)),
team = c(rep('team A', 3),rep('team B', 6), rep('team C', 3)),
prod = c(rep('prod1', 3),rep('prod2', 3), rep('prod3', 3), rep('prod4', 3)),
new = c(new_vals, new_vals+50, new_vals - 50, new_vals+100),
closed = c(new_vals-20, new_vals+30, new_vals - 30, new_vals+80),
productivity = rep(c(50, 70, 80, 40), each = 3),
orig_backlog = rep(c(100, NA, NA), 4)
)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
uiOutput("edit_country"),
uiOutput("edit_team")
),
dashboardBody(
fluidPage(
fluidRow(
column(4,
wellPanel(uiOutput("edit_productivity"))
),
column(4,
wellPanel(uiOutput("edit_new"))
),
column(4,
wellPanel(uiOutput("edit_closed"))
))),
fluidPage(plotOutput("ts_plot")),
fluidPage(dataTableOutput("table"))
)
)
server <- function(input, output) {
react_data <- reactive({
data %>%
filter(country == input$country,
team == input$team) %>%
group_by(country, team, prod) %>%
mutate(
#new = new + round((closed*input$new)/100,0),
#closed = closed + round((closed*input$closed)/100,0),
#productivity = productivity + round((closed*input$productivity)/100,0),
new_minus_closed = new - closed,
backlog = orig_backlog[1] + cumsum(new_minus_closed),
backlog = ifelse(backlog < 0, 0, backlog)
) %>%
select(-orig_backlog) %>%
ungroup() %>%
replace(., is.na(.), 0)
})
output$edit_country <- renderUI({
selectInput("country", "Choose Country",
choices = unique(data$country),
selected = 'US',
multiple = FALSE)
})
output$edit_team <- renderUI({
selectInput("team", "Choose Team",
choices = data %>%
filter(country == input$country) %>%
select(team) %>%
unique() %>%
pull(team),
selected = 'team B',
multiple = FALSE)
})
output$edit_new <- renderUI({
sliderInput("new", "Edit New",
min = -100, max = 100, post = " %",
value = 0)
})
output$edit_productivity <- renderUI({
sliderInput("productivity", "Edit Productivity",
min = -100, max = 100, post = " %",
value = 0)
})
output$edit_closed <- renderUI({
sliderInput("closed", "Edit Closed",
min = -100, max = 100, post = " %",
value = 0)
})
output$ts_plot <- renderPlot({
ggplot(react_data(), aes(date, backlog, group = prod, color = prod)) +
geom_point() +
geom_line() +
labs(x = '') +
theme_minimal()
})
output$table <- DT::renderDataTable({
react_data() %>%
select(date, prod, new, closed, productivity) %>%
as.data.frame()
})
}
shinyApp(ui, server)
解决方案
推荐阅读
- r - Geom_area 用不同颜色填充
- vba - 如何在 Access 2016 中创建从当前数据的先前编号延续的顺序 ID 编号?
- javascript - 单独更改颜色而不是一起更改颜色
- django - Django ORM 时间增量返回 firld 未定义
- python-3.x - 在 InceptionV3 微调中获取每个类的概率
- angular - 组件 HomeComponent 的模板中出现 Angular 10 错误
- css - 在 Blazor 中动态加载下拉内容后,Bootstrap 下拉对齐关闭
- reactjs - 加载我的应用程序后,赛普拉斯存根函数丢失
- vb.net - Vb.net表单允许文本框值小于程序中的派生值
- google-cloud-platform - Cloud SQL 将表导出到云存储