Условные обозначения маркеров на графике появляются несколько раз

#r #plotly

Вопрос:

У меня есть гистограмма с полосами, окрашенными в соответствии с переменной фактора. Мне нужно разместить целевой маркер на каждом баре в определенном месте. Я могу разместить маркер на графике без проблем, но в легенде целевой маркер появляется три раза, в то время как я хотел бы, чтобы он появился только один раз. Я считаю, что такое поведение связано с окраской полос, но эту окраску необходимо сохранить. Может ли кто-нибудь предложить мне решение, чтобы целевой маркер появлялся в легенде только один раз?

 library(tidyverse) library(plotly)  data.frame(grp = c("x", "y", "z") %gt;% as.factor,  vals = c(10, 15, 20)) %gt;%   plot_ly(  x = ~vals,  y = ~grp,  color = ~grp,  colors = c("red", "green", "blue"),  type = "bar"  ) %gt;%   add_markers(name = "target",  x = 17,  marker = list(  color = "black")  )  

введите описание изображения здесь

Ответ №1:

Аргументы in plot_ly будут установлены для всех трасс до тех пор, пока они не будут перезаписаны. В вашем случае color = ~grp внутри plot_ly функции будет сгруппирована каждая трассировка по grp .

Простой вариант-определить полосы с их цветами в собственной трассировке.

Код

 data.frame(grp = c("x", "y", "z") %gt;% as.factor,  vals = c(10, 15, 20)) %gt;%   plot_ly(  x = ~vals,  y = ~grp  ) %gt;%   add_bars(color = ~grp,  colors = c("red", "green", "blue")) %gt;%  add_markers(name = "target",  x = 17,  marker = list(  color = "black")  )   

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

Сюжет
введите описание изображения здесь