Я пытаюсь создать блестящее приложение, которое показывает графики из пакета echarts4r.
Приложение содержит входные данные выбора, гистограмму и точечную диаграмму.
Моя цель - соединить эти три объекта. Когда я нажимаю на один из элементов линейчатой диаграммы, мне бы хотелось, чтобы диаграмма фильтровалась этим элементом. В то же время выбранный вход должен отражать этот выбор. То же самое должно происходить при нажатии элементов в легенде о точечной диаграмме.
Вот пример кода:
library(shiny)
library(tidyverse)
library(echarts4r)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("am", h3("Choose am"),
choices = c(0,1),
selected = c(0,1),
multiple = TRUE)
),
mainPanel(
echarts4rOutput("mt_plot"),
echarts4rOutput("mt_scatter_plot")
)
)
)
server <- function(input, output, session) {
output$mt_plot <- renderEcharts4r({
mtcars_1 <- mtcars %>%
filter(am %in% input$am) %>%
group_by(cyl, am) %>%
summarize(avg_mpg = mean(mpg))
mtcars_1 %>%
group_by(am) %>%
e_charts(cyl) %>%
e_bar(avg_mpg)
})
observe({
input$mt_plot_legend_change
input$mt_scatter_plot_legend_change
if(!is.null(input$mt_plot_legend_change)){
x <- input$mt_plot_legend_change}
else{
x <- input$mt_scatter_plot_legend_change
}
updateSelectInput(session, "am",
selected = x
)
})
output$mt_scatter_plot <- renderEcharts4r({
mtcars_1 <- mtcars %>%
filter(am %in% input$am)
mtcars_1 %>%
group_by(am) %>%
e_charts(disp) %>%
e_scatter(qsec, symbol_size = 15)
})
}
shinyApp(ui = ui, server = server)
Приложение выше не работает так, как мне хотелось бы. Следующий сценарий показывает, что я имею в виду.
Нажмите на легенду гистограммы на значении 1 -> Поведение является правильным, поскольку гистограмма показывает только выбранное значение и выбор вход изменяет свое выбранное значение на 1
Далее: используйте вход выбора, чтобы вернуть значение 0 -> Это также работает.
Далее: снова нажмите на легенду гистограммы на значении 1. -> На этот раз поведение отличается от поведения в номере 1. Мне бы хотелось, чтобы поведение было таким же, как в номере 1. Диаграмма должна быть отфильтрована по выбранному значению и выбранному входу также должны отражать это.
Любая помощь очень ценится!