В моем блестящем приложении я хочу создать линейный график, где значение group
основано на выбранном пользователем вводе: input$tt_groupvar
. Highcharter может сделать это, используя hcaes_string
, но мое приложение в реальной жизни загружает ggplot2, и hchart
завершается неудачей.
В нижеприведенном приложении 1 ggplot2 НЕ загружается явно, и график правильно группирует данные на основе input$tt_groupvar
. Но в app2 ниже, , где единственное отличие состоит в том, что ggplot2 загружен , приложение не работает. После того, как ggplot2 загружен через app2, app1 больше не работает правильно.
Я знаю, что могу сделать это правильно, используя ggplot2 или plotly, но я ДЕЙСТВИТЕЛЬНО хочу использовать highcharter. Есть ли способ обойти это?
Любое понимание очень ценится!
app1
library(shiny)
library(dplyr)
library(highcharter)
df <- data.frame(floorDate = as.Date(c("01/01/2017", "01/01/2017", "01/01/2017", "01/01/2018", "01/01/2018", "01/01/2018", "01/01/2019", "01/01/2019", "01/01/2019", "06/01/2017", "11/01/2018", "12/01/2019"), format = "%m/%d/%Y"),
location = c("MWH", "MWH", "MWH", "MWH", "SH", "MWH","MWH","MWH", "SH", "SH", "MIF", "MIF"),
ethnicity = c("W", "W", "B", "B", "MULT", "MULT","MULT","W","W","B","MULT","B"))
ui <- fluidPage(
titlePanel("my title"),
sidebarLayout(
sidebarPanel(
helpText("Select a grouping variable to plot the number of ROCs
by the values in that group across January 2017 to January 2020."),
selectizeInput("tt_groupvar",
label = "Choose a grouping variable:",
choices = c("Location"="location", "Ethnicity"="ethnicity"),
multiple = FALSE,
selected = c("location"))
),
mainPanel(
highchartOutput("timeTrend_1")
)
)
)
server <- function(input, output) {
output$timeTrend_1 <- renderHighchart({
hchart(df %>%
group_by_at(c("floorDate", input$tt_groupvar)) %>%
count(),
type = "line",
hcaes_string(x = "floorDate", y = "n", group = input$tt_groupvar)) %>% #THE ISSUE IS HERE!!!!
hc_xAxis(title = list(text = "")) %>%
hc_yAxis(title = list(text = "# of ROCs")) %>%
hc_title(text = "Number of ROCs per Month by Group from 2017 to January 2019")
})
}
shinyApp(ui, server)
app2
library(shiny)
library(dplyr)
library(highcharter)
library(ggplot2)
df <- data.frame(floorDate = as.Date(c("01/01/2017", "01/01/2017", "01/01/2017", "01/01/2018", "01/01/2018", "01/01/2018", "01/01/2019", "01/01/2019", "01/01/2019", "06/01/2017", "11/01/2018", "12/01/2019"), format = "%m/%d/%Y"),
location = c("MWH", "MWH", "MWH", "MWH", "SH", "MWH","MWH","MWH", "SH", "SH", "MIF", "MIF"),
ethnicity = c("W", "W", "B", "B", "MULT", "MULT","MULT","W","W","B","MULT","B"))
ui <- fluidPage(
titlePanel("my title"),
sidebarLayout(
sidebarPanel(
helpText("Select a grouping variable to plot the number of ROCs
by the values in that group across January 2017 to January 2020."),
selectizeInput("tt_groupvar",
label = "Choose a grouping variable:",
choices = c("Location"="location", "Ethnicity"="ethnicity"),
multiple = FALSE,
selected = c("location"))
),
mainPanel(
highchartOutput("timeTrend_1")
)
)
)
server <- function(input, output) {
output$timeTrend_1 <- renderHighchart({
hchart(df %>%
group_by_at(c("floorDate", input$tt_groupvar)) %>%
count(),
type = "line",
hcaes_string(x = "floorDate", y = "n", group = input$tt_groupvar)) %>% # THE ISSUE IS HERE!
hc_xAxis(title = list(text = "")) %>%
hc_yAxis(title = list(text = "# of ROCs")) %>%
hc_title(text = "Number of ROCs per Month by Group from 2017 to January 2019")
})
}
shinyApp(ui, server)