#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 разделяются полосами и маркерами, но цвета определяются отдельно в каждой трассировке. Таким образом, вы получаете отдельные легенды для баров и одну легенду для маркеров.