Как я могу предотвратить перекрытие баров с одинаковым значением x друг с другом с помощью гистограммы Plotly - PullRequest
0 голосов
/ 07 января 2019

Рассмотрим следующие данные и график

library(plotly)

# data
products <- data.frame(
  ProductId = c(1, 2, 3, 4, 5),
  DaysTilExpiration = c(3, 3, 7, 7, 7),
  RemainingInventory = c(100, 50, 25, 30, 41)
)
products
  ProductId DaysTilExpiration RemainingInventory
1         1                 3                100
2         2                 3                 50
3         3                 7                 25
4         4                 7                 30
5         5                 7                 41

# plot
plot_ly(data = products, x = ~DaysTilExpiration, y = ~RemainingInventory, type = 'bar')

enter image description here

Как вы можете видеть, некоторые продукты не отображаются на графике, потому что они имеют то же значение х, что и другие продукты. В идеале, если продукты 1 и 2 имеют одинаковое значение x, я бы хотел, чтобы их столбцы были рядом друг с другом. Это возможно при использовании сюжетно ? (Я знаю, что существует понятие сгруппированных гистограмм , но я не думаю, что это правильное решение для этих данных.

UPDATE:
Оказывается, я могу построить это, используя ggplot2 как и

library(ggplot2)
ggplot(products, aes(x = DaysTilExpiration, y = RemainingInventory))+
  geom_bar(stat = "identity", position = position_dodge2())

Технически я могу использовать plotly::ggplotly() для построения своего сюжета, но было бы неплохо увидеть собственное сюжетное решение для этого (если оно существует).

enter image description here

1 Ответ

0 голосов
/ 13 января 2019

Один из способов сделать это - добавить дополнительный параметр для именования баров, например, name = ~ProductId.

plot_ly(data = products, 
        x = ~DaysTilExpiration, 
        y = ~RemainingInventory, 
        name = ~ProductId, 
        type = 'bar')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...