闪亮的应用程序,画笔功能与滑块相结合

Posted

技术标签:

【中文标题】闪亮的应用程序,画笔功能与滑块相结合【英文标题】:Shiny app, brush feature combined with slider 【发布时间】:2017-03-20 00:25:26 【问题描述】:

我有一个关于我的闪亮应用程序的问题,它是 2 级响应。在第一级,用户在滑块上选择一个值,然后创建一个绘图。 该图再次具有反应性,因为您可以使用画笔选择一部分点,然后在下表中表示。 问题是,基于滑块值计算的选定值未显示。 这是我正在尝试的代码:

server <- function(input,output, session) 

  library(ggplot2) 
  library(DT) 

  output$plot <- renderPlot(
    ggplot(diamonds, aes(price, carat*input$w1)) + geom_point()
  )

  diam <- reactive(

    user_brush <- input$user_brush
    mysel <- brushedPoints(diamonds, user_brush)
    return(mysel)

  )

  output$table <- DT::renderDataTable(DT::datatable(diam()))


ui <-   fluidPage(
  sliderInput(inputId = "w1",
              label = "weight on carat",
              value = 5, min = 0, max = 40.0),
  plotOutput("plot", brush = "user_brush"),
  dataTableOutput("table")
)

shinyApp(ui = ui, server = server)

我怀疑是服务器部分的问题。即计算 carat*input$w1 改变了基础数据。 Shiny 迷路了,无法识别表格输出中要显示的数据。

到目前为止的一般想法:我需要使用 carat*input$w1 的变量实现一个新的 data.frame 并参考这个 data.frame。不幸的是,我无法运行它。

有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以创建一个包含加权克拉的新数据框并使用此新数据框进行绘图

library(shiny)
library(ggplot2)

server <- function(input,output, session) 

  weighted.diamonds <- reactive(
    cbind(diamonds, weighted_carat = diamonds$carat*input$w1)
  )

  output$plot <- renderPlot(
    ggplot(weighted.diamonds(), aes(price, weighted_carat)) + geom_point()
  )

  diam <- reactive(

    user_brush <- input$user_brush
    mysel <- brushedPoints(weighted.diamonds(), user_brush)
    return(mysel)

  )

  output$table <- DT::renderDataTable(DT::datatable(diam()))


ui <-   fluidPage(
  sliderInput(inputId = "w1",
              label = "weight on carat",
              value = 5, min = 0, max = 40.0),
  plotOutput("plot", brush = "user_brush"),
  dataTableOutput("table")
)

shinyApp(ui = ui, server = server)

【讨论】:

以上是关于闪亮的应用程序,画笔功能与滑块相结合的主要内容,如果未能解决你的问题,请参考以下文章

jquery滑块,上面的值与滑块一起移动

Vuetify 滑块附加插槽文本字段未与滑块对齐

我想与滑块一起滑动/移动猫头鹰点

如何使范围滑块的左侧与滑块右侧的颜色不同?

jQuery滑块:颜色更改菜单不会与滑块的其余部分同步

高斯模糊与滑块式图片验证码