Есть ли способ добавить изображение стрелки сбоку на гистограмме на основе некоторой базовой информации?
У меня есть следующий скрипт:
library(tidyverse)
library(plotly)
data <- tibble(url = c("google.com","yahoo.com","yandex.com"), values = c(500,400,300), change = c(0.5,-0.9,0.1))
data
data %>%
plot_ly(x = data$values,
y = data$url,
type = "bar")
Это создает простую гистограмму в графическом режиме, я хотел бы добавить несколько стрелок рядом с каждой гистограммой, чтобы показать, что значения либо уменьшились или увеличено на основе столбца data$change
. поэтому, если число положительное, стрелка повернута вверх, а зеленая, если отрицательная, то стрелка красного цвета, направленная вниз
Возможно ли это?
Если это невозможно - есть ли способ наложить просто текст процентного изменения вместо столбчатой диаграммы?
Надеюсь, это go будет на блестящем приложении, поэтому даже если есть способ встраивания или наложения элемента html, было бы полезно!
Если в ggplot есть альтернатива, тоже было бы интересно.
Надеюсь, что-то похожее на это:
ТОЛЬКО ДЛЯ ОБНОВЛЕНИЯ В ОТНОШЕНИИ НИЖЕ ОТВЕТА НА КОД БУДЕТ БЫТЬ:
`library(tidyverse)
library(plotly)
data <- tibble(url = c("google.com","yahoo.com","yandex.com"), values = c(500,400,300), change = c(0.5,-0.9,0.1))
data
data %>%
plot_ly(x = data$values,
y = data$url,
type = "bar")
library(dplyr)
data <- data %>%
mutate(x.start = values + 50,
y.end = seq(0,2,1),
y.start = y.end + 0.5) %>%
mutate(y.start.new = case_when(sign(change) == -1 ~ y.end,
TRUE ~ y.start),
y.end.new = case_when(sign(change) == -1 ~ y.start,
TRUE ~ y.end)
)
data %>%
plot_ly(x = data$values,
y = data$url,
type = "bar") %>%
add_markers(~values, ~url) %>%
add_annotations(x = ~x.start[change == "up"],
y = ~y.start.new[change == "up"],
xref = "x", yref = "y",
axref = "x", ayref = "y",
text = "",
showarrow = T,
ax = ~x.start[change == "up"],
ay = ~y.end.new[change == "up"],
arrowcolor = "green") %>%
add_annotations(x = ~x.start[change == "down"],
y = ~y.start.new[change == "down"],
xref = "x", yref = "y",
axref = "x", ayref = "y",
text = "",
showarrow = T,
ax = ~x.start[change == "down"],
ay = ~y.end.new[change == "down"],
arrowcolor = "red")
`
Но у вас не получается такой же результат - появляется только одна стрелка?