echarts4r: соединить легенду диаграммы с selectInput - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь создать блестящее приложение, которое показывает графики из пакета 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 -> Поведение является правильным, поскольку гистограмма показывает только выбранное значение и выбор вход изменяет свое выбранное значение на 1

  2. Далее: используйте вход выбора, чтобы вернуть значение 0 -> Это также работает.

  3. Далее: снова нажмите на легенду гистограммы на значении 1. -> На этот раз поведение отличается от поведения в номере 1. Мне бы хотелось, чтобы поведение было таким же, как в номере 1. Диаграмма должна быть отфильтрована по выбранному значению и выбранному входу также должны отражать это.

Любая помощь очень ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...