[英]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 包含相应的列。 我该如何解决这个问题? 任何帮助,将不胜感激!
问题是xvar
和yvar
是字符串。 为了使您的代码工作,您必须使用例如!!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.