热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Shiny中正确获取多个updatePickerInput逻辑

K,我非常感谢您的帮助。我在弄清多个shinyWidgets::updatePickerInput的逻

K,我非常感谢您的帮助。我在弄清多个shinyWidgets::updatePickerInput的逻辑时遇到麻烦。

下面的示例起作用...但是,您会注意到,您只能选择一项运动。如果您选择2项运动,然后导航至“团队”输入,则可以“重置为主要运动”,您会看到所需的团队出现。

目标是拥有一个允许用户无缝切换​​开/关运动和团队的应用程序,并附带一些警告。

1)如果您选择一项或多项主要运动,我希望所有团队先出现,然后选择一次取消选择一个。

2)如果您选择一个或多个球队,我希望能够选择一种体育项目来与该单个球队进行比较(例如,您选择了鲨鱼,并希望了解鲨鱼的外观和所有鲨鱼的外观)足球队)

长代码,但谢谢您的想法!

# load packages CHECK INSTALL 1st
library(tidyverse)
library(shiny)
library(ggrepel)
library(shinyWidgets)
# data wide
seriesDataWide <- data.frame(
date = seq.Date(from = as.Date("2019-01-01"),to = as.Date("2019-12-01"),by = "1 day"),football_bears = rnorm(335,mean = 3,sd = 0.5),football_eagles = rnorm(335,football_giants = rnorm(335,baseball_cubs = rnorm(335,baseball_sox = rnorm(335,hockey_bruins = rnorm(335,hockey_flames = rnorm(335,hockey_sharks = rnorm(335,hockey_preds = rnorm(335,stringsAsFactors = FALSE
)
# data long
seriesData <- seriesDataWide %>%
pivot_longer(-date,names_to = "sport_team",values_to = "value") %>%
separate(sport_team,into = c("sport","team"),sep = "_")
#### SHINY APP
ui <- fluidPage(
# title
titlePanel(strong("My Sport Plot")),# plot
plotOutput("plot",height = '600px'),# selectors
fluidRow(
column(1),column(5,pickerInput(
inputId = "varsOfIntMajor",label = "Select Sport",choices = unique(seriesData$sport),width = "100%",optiOns= list(
`actions-box` = TRUE,size = 5,dropdownAuto = FALSE
),choicesOpt = list(
style = rep_len("font-size: 75%; line-height: 0.8;",length(unique(seriesData$sport)))
),multiple = TRUE
)
),pickerInput(
inputId = "varsOfIntMinor",label = "Add or Subtract Team",choices = unique(seriesData$team),optiOns= pickerOptions(
actiOnsBox= TRUE,deselectAllText = "Reset to Major Sport",size = 5
),length(unique(seriesData$team)))
),column(1)
),sliderInput("daterange","Date Range:",min = as.Date("2019-01-01","%Y-%m-%d"),max = as.Date(Sys.Date(),value = c(as.Date("2016-01-01"),Sys.Date()),timeFormat = "%Y-%m-%d",width = '80%')
)
# Define a server for the Shiny app
server <- function(input,output,session) {
# plot
output$plot <- renderPlot({
# filter date range
dat <- seriesData[seriesData$date >= input$daterange[1] & seriesData$date <= input$daterange[2],]
# first check minor vals
if(is.null(input$varsOfIntMinor)) {
if(is.null(input$varsOfIntMajor)) {
seriesData <- dat
} else {
seriesData <- dat %>%
filter(sport %in% input$varsOfIntMajor)
## TURNING THIS OFF ALLOWS MULTIPLE SELECTIONS FOR MAJOR,BUT DISABLES FINER GRAIN MINOR W/I MAJOR
## THIS HAPPENS BECAUSE IF YOU UPDATE MINOR SECTOR IT NO LONGER SEES IT AS NULL AND SO JUMPS TO THE
## BOTTOM OF THE LOOP
updatePickerInput(session = session,"varsOfIntMajor",selected = unique(seriesData$sport))
updatePickerInput(session = session,"varsOfIntMinor",selected = unique(seriesData$team))
}
} else {
seriesData <- dat %>%
filter(team %in% input$varsOfIntMinor)
updatePickerInput(session = session,selected = unique(seriesData$team))
}
# generate percentiles
seriesData$pctile <- ave(seriesData$value,seriesData$team,FUN = function(x) ecdf(x)(x))
# create df for last observations
lastObs <- data.frame(
date = unlist(lapply(unique(seriesData$team),function(x) max(seriesData[seriesData$team == x,"date"][[1]]))),team = unique(seriesData$team),stringsAsFactors = FALSE
)
lastObs <- merge(lastObs,seriesData)
# plot
ggplot(seriesData,aes(value,color = team)) +
stat_ecdf(lwd = 2,alpha = 0.5) +
geom_point(data = lastObs,aes(x = value,pctile,color = team),size = 4) +
geom_label_repel(data = lastObs,color = team,label = team),force = 1,nudge_x = 20,fOntface= "bold") +
scale_y_continuous(labels = scales::percent,expand = c(0,0),breaks = seq(0,1,0.1)) +
labs(x = "value",y = "Percent Rank",color = "",title = "CDF Sports") +
guides(color = "none") +
theme_minimal()
})
}
shinyApp(ui,server)





推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
author-avatar
Carmen果果时代
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有