繁体   English   中英

如何在 shiny 中使用 highcharter 为不同的输入变量制作交互式图表

[英]How to make an interactive chart for varying input variables using highcharter in shiny

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

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

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 包含相应的列。 我该如何解决这个问题? 任何帮助,将不胜感激!

问题是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)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM