ggplot2とplotlyで作成したグラフから凡例を残してデータを非表示にする

カテゴリ: r

plotlyで作成したグラフは凡例をクリックすると、データの表示・非表示を変更できます。ではデフォルトで一部の凡例を非表示にする方法はあるでしょうか。

調べたところ、該当するデータ部分のvisibility属性としてlegendonlyを指定すれば良いようです1

ggplot2で作成したグラフをggplotly関数でplotly化した場合も、visibilityを変更できます。まずplotly_build関数を適用して生成されるリストを編集すれば良いようです2

StackOverflowの例をパイプで書き直すと以下のようになります。データ構造も見て頑張れば表示したい系列をうまく選択できる関数を作れそうですね。

library(ggplot2)
library(purrr)
library(plotly, warn.conflicts = FALSE)

gg <- mtcars %>%
  mutate(am = ifelse(am == 1, "automatic", "manual")) %>%
  ggplot() +
  aes(wt, mpg, color = am) +
  geom_point()

gg %>%
  ggplotly() %>%
  plotly_build() %>%
  {
    .$x$data[[2L]]$visible <- "legendonly"
    .
  }