【问题标题】:How to make an interactive chart for varying input variables using highcharter in shiny如何使用闪亮的highcharter为不同的输入变量制作交互式图表
【发布时间】:2020-08-19 15:23:08
【问题描述】:

在 R 中,我想创建一个 highcharter 图表,它根据来自选择输入字段的用户输入显示不同的组合。但是,我一直在失败。

我有两个输入字段,两个输入字段都有两个机会。用户可以选择任一组合,所选变量应用于 Highcharter 中的散点图。我尝试了很多机会,但它不起作用。

xvar <- input$varx
yvar <- input$vary

hc <-   chart_df %>%
    hchart('scatter',
       hcaes(x = xvar,
             y = yvar,
             names = xvar),
       dataLabels = list(enabled = TRUE,
                         format = '{point.names}')
)

但是,它不能识别分配的 xvar 和 yvar。数据框 chart_df 包含相应的列。 我怎么能解决这个问题?任何帮助将不胜感激!

【问题讨论】:

    标签: r shiny r-highcharter


    【解决方案1】:

    问题在于xvaryvar 是字符串。要使您的代码正常工作,您必须使用例如将它们转换为符号!!sym() 或使用 hcaes_string 类似 ggplot2::aes_string 允许您将变量作为字符传递。

    使用mtcars 作为示例数据集试试这个:

    library(shiny)
    library(highcharter)
    library(rlang)
    
    ui <- fluidPage(
    
        sidebarLayout(
            sidebarPanel(
                selectInput("varx",
                            "varx",
                            choices = names(mtcars),
                            selected = "hp"),
                selectInput("vary",
                            "vary",
                            choices = names(mtcars),
                            selected = "mpg")
            ),
    
            # Show a plot of the generated distribution
            mainPanel(
                highchartOutput("highchart"),
                highchartOutput("highchart2")
            )
        )
    )
    
    server <- function(input, output) {
    
        output$highchart <- renderHighchart({
            
            xvar <- input$varx
            yvar <- input$vary
            
            hc <-   mtcars %>%
                hchart('scatter',
                       hcaes(
                           x = !!sym(xvar),
                           y = !!sym(yvar),
                           names = !!sym(xvar)),
                       dataLabels = list(enabled = TRUE,
                                         format = '{point.names}')
                )
        })
        
        output$highchart2 <- renderHighchart({
            
            xvar <- input$varx
            yvar <- input$vary
            
            hc <-   mtcars %>%
                hchart('scatter',
                       hcaes_string(
                           x = xvar,
                           y = yvar,
                           names = xvar),
                       dataLabels = list(enabled = TRUE,
                                         format = '{point.names}')
                )
        })
    }
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

    • 感谢代码!但是,我收到错误“评估错误:找不到对象'xvar'。” ..
    • 嗨@AndiMaier。嗯。奇怪的。我也遇到了一些问题,但是在重新启动 R 后,代码运行良好。请参阅我添加的屏幕截图。我的 pkg 版本:闪亮 1.5.0、rlang 0.4.7、highcharter 0.8.2。
    猜你喜欢
    • 2014-11-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2020-04-16
    • 1970-01-01
    相关资源
    最近更新 更多