#r #plotly
Вопрос:
На графике ниже я хотел бы добавить пользовательскую панель ошибок, расположенную справа от панели. Я на полпути, как показано ниже, другими словами, у меня есть горизонтальная линия, но я не могу понять, как добавить вертикальную полосу в конец тонкой линии, как показано зеленым цветом ниже. У кого-нибудь есть какие-либо идеи о том, как этого добиться?
library(magrittr)
library(plotly)
df <- data.frame(grp = c("A", "B", "C", "D", "E") %>% as.factor,
val = c(11:15)) %>%
df %>%
plot_ly(x = ~val,
y = ~grp,
type = "bar") %>%
add_segments(xend = 20,
yend = ~grp)
Ответ №1:
Вы можете добавить маркер в конец сегмента.
Кроме того, вы можете сгруппировать легенды сегмента и маркера вместе, чтобы при переключении элементов легенды они были скрыты/показаны одновременно.
Код
df %>%
plot_ly(x = ~val,
y = ~grp,
type = "bar") %>%
add_segments(xend = 20,
yend = ~grp,
legendgroup = "g1") %>%
add_markers(x = 20,
# style marker
marker = list(
symbol = "line-ns-open",
size = 15,
line = list(
width = 5
)),
# combine legends
legendgroup = "g1",
showlegend = F)
Комментарии:
1. Большое спасибо @tamtam. Один последующий вопрос, который я распознаю, выходит за рамки исходного вопроса, знаете ли вы, как я скрываю только запись легенды для цвета полосы (т. Е. трассировка 0), сохраняя при этом запись легенды для строки ошибок (т. Е. трассировка 1). Я попытался добавить «showlegend = F» в первое утверждение «plot_ly», но это скрывает всю легенду.
2. Первый showlegend, похоже, перезаписывает остальную часть кода. Возможно, вам потребуется определить
showlegend
для каждой трассировки и добавить%>% layout(showlegend = T)
в конце.df %>% plot_ly(x = ~val, y = ~grp, type = "bar", showlegend = F) %>% add_segments(xend = 20, yend = ~grp, legendgroup = "g1", showlegend = T) %>% add_markers(x = 20, marker = list(symbol = "line-ns-open", size = 15, line = list(width = 5)), legendgroup = "g1", showlegend = F) %>% layout(showlegend = T)
3. Это сделало свое дело. Большое спасибо!