У меня есть следующий ggvis с блестящим кодом, который создает 2 графика с набором данных mtcars, поставляемым с R. На первом графике, если я дважды щелкну точку, все точки с одинаковым количеством передач (mtcars$gear) в пределах 2-й график становится красным. Автомобили могут иметь 3, 4 или 5 передач. Итак, если я нажму на точку на 1-м графике, имеющую 3 передачи, все автомобили с 3-мя передачами превратятся в красные точки на 2-м графике.
Это код server.R-
library(ggvis)
library(dplyr)
mtcars$id <- seq_len(nrow(mtcars))
shinyServer(function(input, output, session) {
lb <- linked_brush(keys = mtcars$id, "red")
mtcars %>%
ggvis(~mpg, ~wt) %>%
layer_points(fill := lb$fill, fill.brush := "red") %>%
lb$input() %>%
set_options(width = 300, height = 300) %>%
bind_shiny("plot1") # Very important!
# A subset of mtcars, of only the selected points
selected <- lb$selected
mtcars_selected <- reactive({
mtcars[selected(), ]
})
mtcars_selected1 <- reactive({
print(mtcars[mtcars$gear == mtcars[selected(), ]$gear, ])
})
vis <- reactive({
mtcars %>%
ggvis(~mpg, ~wt) %>%
layer_points() %>%
add_data(mtcars_selected1) %>%
layer_points(fill := "#dd3333") %>%
set_options(width = 300, height = 300)
})
vis %>% bind_shiny("plot2")
})
Это код ui.R -
library(ggvis)
shinyUI(bootstrapPage(
ggvisOutput("plot1"),
ggvisOutput("plot2")
))
У меня вопрос, можно ли это сделать на том же графике? То есть я хочу нажать на точку, и все точки с одинаковым количеством передач станут красными на том же графике. Я долго гуглил, и я не могу найти какое-либо направление. Любая помощь будет оценена.