使用用户界面,nearpoint/renderprint/verbatimTextOutput('print') 在用户点击时显示部分变量

Posted

技术标签:

【中文标题】使用用户界面,nearpoint/renderprint/verbatimTextOutput(\'print\') 在用户点击时显示部分变量【英文标题】:using user interface, nearpoint/renderprint/verbatimTextOutput('print') to show part of variables on user click使用用户界面,nearpoint/renderprint/verbatimTextOutput('print') 在用户点击时显示部分变量 【发布时间】:2021-11-07 21:23:58 【问题描述】:

下面附上我用于 Shiny 应用程序的代码。我想知道如何专门使用 click="plot_click"/near-point/render print 来显示部分数据()。如果你看附图,你会看到那一堆信息已经出现了see image,但我需要取“名字”,只有获胜次数。

 #code------------------------------------  
 server<- function(input, output, session) 

  #wrangling data:
 gslam<- as.data.frame(gslam1)
  gslam$tournament <- sapply(gslam$tournament, function(val) 
  agrep(val, c('Australian Open', 'U.S. 
   Open','Wimbledon','FrenchOpen'), 
                                                               
  value = TRUE))

  #pivot plot based on Tournament
  reactive_data<-reactive(
  req(input$sel_tournament)
  df<- gslam %>% filter(tournament %in% 
  input$sel_tournament)%>%group_by(winner,tournament)%>% 
   mutate(winningNumber=n())
  df<-df %>% arrange(winner)
  )

 #dynamic list

  observe(
updateSelectInput(session,"sel_tournament", choices = 
 gslam$tournament, select="U.S. Open")
   )



    # create the plot  
  output$WinnerPlot <- renderPlot(

  g<- ggplot(reactive_data(),aes( y =winner,  x 
 =winningNumber),decreasing=FALSE) + 
  theme(legend.position=none")

g+geom_bar(stat="identity",width=0.5, fill="black"))

输出$print = 渲染打印( 近点( reactive_data(), # 绘图数据 input$plot_click, # 输入变量以获取 x/y maxpoints = 1, # 只显示最近的单个点 threshold = 1000 # 基本上是一个搜索半径。设置这么大

                      # to show at least one point per click
    ))

 output$Top5Plot <-renderPlot(
g<- ggplot(reactive_data(),aes( y =winner,  x 
=winningNumber),decreasing=FALSE) + theme(legend.position = 
"none")

    g+geom_bar(stat="identity",width=0.5, fill="black")

  )



ui <- navbarPage("Grand Slam Shiny Application", id="cc",
             tabPanel("Winners' Rank",
                      fluidRow(titlePanel("Grand Slam 
ShinyApp"),
                                 sidebarPanel(
                                   selectInput(inputId = 
"sel_tournament",label="Choose Tournament:","Names"))), 
plotOutput(("WinnerPlot"), click="plot_click"),
                 verbatimTextOutput('print')
                                                ),
             
             tabPanel("Top 5 Winners' Performance", 
plotOutput("Top5Plot"))
             )

# Run the App
shinyApp(ui, server)

【问题讨论】:

【参考方案1】:

您可以在nearPoints 中获得dplyr::select 的帮助。

output$print = renderPrint(
  nearPoints(
    dplyr::select(reactive_data(), winner, winningNumber),      
    input$plot_click,   
    maxpoints = 1,      
    threshold = 1000  
  ))

【讨论】:

感谢您的评论。我已经测试过,但它并没有改变输出,当我点击时仍然输出所有信息。 我明白了。不幸的是,我无法对此进行测试,因为您尚未共享数据以重现该问题。

以上是关于使用用户界面,nearpoint/renderprint/verbatimTextOutput('print') 在用户点击时显示部分变量的主要内容,如果未能解决你的问题,请参考以下文章

使用啥来编写用户界面?

我应该如何使用 UISplitView 自适应用户界面呈现 UISearchController?

使用 Android Studio 构建简单的用户界面

使用 FOS 用户包编辑用户配置文件

用户控件的使用总结

python 使用TKinter绘制用户界面