Плотно легенда, чтобы показать / скрыть все символы прорисовки

Предположим, я строю сюжетную диаграмму рассеяния, которая отображает три разные группы (здесь они обозначены цветом). Я могу показать / скрыть каждую группу в отдельности, нажав на группы в легенде.

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")
        )
    )
))

Это производит (в зависимости от версии) следующие выпадающие "кнопки":

сюжетный вывод с расширенными кнопками

Я не знаю, как динамически обновлять кнопки в зависимости от текущей видимости или как сделать обе кнопки постоянно видимыми, а не доступными только через раскрывающееся меню.

Другие вопросы по тегам