Цвета и текстовые аннотации в Plotly R - интерактивный режим - PullRequest
1 голос
/ 17 марта 2020

Проблема: Следующий код создает график , который группирует данные на основе цвета и комментирует текст в соответствующих точках y-данных. При взаимодействии с графиком (на панели просмотра) выбор, например, только модели a4 (путем щелчка по линии), работает неправильно, поскольку линии исчезают для всех других моделей, но соответствующие номера не будут. Есть идеи, как это исправить?

library(plotly)
library(data.table)
dt <- as.data.table(mpg)

plot_ly(dt[model %in% c("a4", "passat")],
        x = ~year,
        y = ~displ,
        color = ~model,
        colors = "Set1") %>% 
  add_lines() %>% 
  add_text(y = ~displ, 
           text = ~displ,
           textposition = "top right",
           showlegend = FALSE) %>% 
  layout(xaxis = list(title = ""),
         yaxis = list(title = "Anzahl"))

Ниже вы можете найти рисунок, описывающий мою проблему. Как только я выбираю только a4 на графике, линия passat исчезает, но числа, связанные с этой линией, остаются.

Цель: Как изменить код так, чтобы исчезла не только строка для a4 / passat, но и связанные с ней числа? enter image description here

Ценю ваши предложения / предложения.

1 Ответ

2 голосов
/ 18 марта 2020

Оператор add_text имеет параметр showlegend как FALSE, который эффективно скрывает потенциальную вторую легенду, которая отображает / скрывает текст / цифры.

Одной из стратегий может быть использование legendgroup сгруппировать две легенды вместе для строк и текста, при этом скрывая текстовую легенду. В этом случае группе следует присвоить model.

library(plotly)
library(data.table)

dt <- as.data.table(mpg)

plot_ly(dt[model %in% c("a4", "passat")],
        x = ~year,
        y = ~displ,
        color = ~model,
        colors = "Set1") %>% 
  add_lines(legendgroup = ~model) %>% 
  add_text(y = ~displ, 
           text = ~displ,
           textposition = "top right",
           showlegend = FALSE,
           legendgroup = ~model) %>% 
  layout(xaxis = list(title = ""),
         yaxis = list(title = "Anzahl"))

Участок

plotly plot using legendgroup

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