Проблема с накоплением бара в новой версии plotly

Я пытаюсь создать очень простую гистограмму с помощью ggplot2, а затем превратить ее в интерактивный график с помощью функции ggplotly из пакета plotly. Окончательный график выглядит нормально, но значения, отображаемые в тексте при наведении курсора, не подходят. Фактически, он отображает значения с накоплением вместо отдельных значений.

Вот воспроизводимый пример:

#data
dataf = data.frame(Espece = c("A","A","B","B","C","C"),
                   Type = c("A","B","A","B","A","B"),
                   Value = c(2,2,5,1,6,0))
#ggplot
gg = ggplot(dataf, aes(x = Espece, y = Value, fill = Type)) + 
  geom_bar(stat = "identity") +
  theme(legend.position = "none") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

#plotly
p <- ggplotly(gg)
p

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

Как вы можете видеть на картинке, значение Espece A, type B равно 4, тогда как должно быть 2.

Ты хоть представляешь, как я могу это исправить?


person Bambs    schedule 20.04.2016    source источник
comment
Вы используете dataf2 в ggplot при создании dataf непосредственно перед этим. dataf2 новый фрейм данных или равен dataf? В dataf значение Espece A, type B равно 4.   -  person bVa    schedule 20.04.2016


Ответы (1)


Когда вы распечатываете графику ggplot, он выглядит нормально. Так что, возможно, это одна из ошибок. Пока он не будет исправлен, возможно, вы могли бы использовать эту альтернативу:

library(dplyr)
datafA <- dataf %>% filter(Type == "A")
datafB <- dataf %>% filter(Type == "B")

p <- plot_ly(data=datafA,
  x = Espece,
  y = Value,
  type = "bar",
  hoverinfo="text",
  text = paste("Espece = ", datafA$Espece, "<br>Value = ", datafA$Value, "<br>Type = ", datafA$Type),
  color = Type, colors = "red"
)
p


p2 <- add_trace(
  p,
  data=datafB,
  x = Espece,
  y = Value,
  type = "bar",
  hoverinfo="text",
  text = paste("Espece = ", datafB$Espece, "<br>Value = ", datafB$Value, "<br>Type = ", datafB$Type),
  color = Type, colors = "blue"
)
p2

layout(p2, barmode = "stack", showlegend = FALSE)

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

person MLavoie    schedule 20.04.2016
comment
Привет, @MLavoie, большое спасибо за ответ. Я думал об этом решении, но дело в том, что это был всего лишь пример, в реальных данных у меня есть различное количество категорий, от 10 до 50. Кажется, немного сложно использовать add_trace для каждой категории. Я бы предпочел использовать функцию ggplotly. Как вы думаете, это настоящая ошибка или я просто неправильно использую эту функцию? - person Bambs; 20.04.2016
comment
Думаю, это ошибка. Бывает часто :( - person MLavoie; 20.04.2016