如何在 shiny 中使用 highcharter 为不同的输入变量制作交互式图表
How to make an interactive chart for varying input variables using highcharter in shiny
在 R 中,我想创建一个 highcharter 图表,它根据来自 select 输入字段的用户输入显示不同的组合。但是,我一直在失败。
我有两个输入字段,其中两个输入字段都有两次机会。用户可以 select 任一组合,并且 selected 变量应用于 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 包含相应的列。
我该如何解决这个问题?如有任何帮助,我们将不胜感激!
问题是 xvar
和 yvar
是字符串。为了使您的代码工作,您必须使用例如将它们转换为符号!!sym()
或使用像 ggplot2::aes_string
一样的 hcaes_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)
在 R 中,我想创建一个 highcharter 图表,它根据来自 select 输入字段的用户输入显示不同的组合。但是,我一直在失败。
我有两个输入字段,其中两个输入字段都有两次机会。用户可以 select 任一组合,并且 selected 变量应用于 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 包含相应的列。 我该如何解决这个问题?如有任何帮助,我们将不胜感激!
问题是 xvar
和 yvar
是字符串。为了使您的代码工作,您必须使用例如将它们转换为符号!!sym()
或使用像 ggplot2::aes_string
一样的 hcaes_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)