Плотно легенда, чтобы показать / скрыть все символы прорисовки
Предположим, я строю сюжетную диаграмму рассеяния, которая отображает три разные группы (здесь они обозначены цветом). Я могу показать / скрыть каждую группу в отдельности, нажав на группы в легенде.
library(ggplot2)
library(plotly)
d <- data.frame("a" = sample(1:50, 20, T), "b" = sample(1:50, 20, T),
"col" = factor(sample(1:3, 20, T)))
gg <- ggplot() + geom_point(aes(x = a, y = b, color = col), data = d)
gg
plotly_build(gg)
Есть ли способ добавить кнопку к легенде, чтобы показать / скрыть все точки?
2 ответа
Я не знаю способа одновременного переключения всех точек, но (как указано в комментариях, что это будет подходящей альтернативой), можно начинать со всех их скрытых и делать точки видимыми по одному за раз
plot_ly(data=d, x=a, y=b, type='scatter', mode='markers', color=col, visible='legendonly')
Это может быть ближе к тому, о чем изначально просили, но это просто "кнопка", а не запись легенды, поэтому размещение сложно.
library(ggplot2)
library(plotly)
d <- data.frame("a" = sample(1:50, 20, T), "b" = sample(1:50, 20, T),
"col" = factor(sample(1:3, 20, T)))
gg <- ggplot() + geom_point(aes(x = a, y = b, color = col), data = d)
gg
plotly_build(gg) %>%
layout(updatemenus = list(
list(
type = "buttons",
direction = "right",
xanchor = "center",
yanchor = "top",
showactive = FALSE,
x = 1.05,
y = 0.2,
buttons = list(
list(method = "restyle",
args = list("visible", "all"),
label = "show all"),
list(method = "restyle",
args = list("visible", "legendonly"),
label = "hide all")
)
)
))
Это производит (в зависимости от версии) следующие выпадающие "кнопки":
Я не знаю, как динамически обновлять кнопки в зависимости от текущей видимости или как сделать обе кнопки постоянно видимыми, а не доступными только через раскрывающееся меню.