如何使用闪亮的highcharter制作交互式图表来改变输入变量

问题描述

在R中,我想创建一个高位图表,该图表根据来自选择输入字段的用户输入显示各种组合。但是,我一直在失败。

我有两个输入字段,其中两个输入字段都有两次机会。用户可以选择任一组合,并且所选变量应用于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包含相应的列。 我该如何解决?任何帮助将不胜感激!

解决方法

问题在于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",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),format = '{point.names}')
            )
    })
}

shinyApp(ui = ui,server = server)

enter image description here