如何使用Plotly的条形图防止x值相同的条形相互重叠

时间:2019-01-07 16:42:50

标签: r plotly

考虑以下数据并绘制图

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

如您所见,某些产品未显示在地块上,因为它们与其他产品具有相同的x值。理想情况下,如果乘积1和乘积2具有相同的x值,则我想显示它们的条形彼此相邻。使用plotly可以做到吗? (我知道grouped bar charts的概念存在,但我认为这不是解决此数据的正确方法。

更新:
事实证明,我可以这样使用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 :(得分:0)

一种实现方法是添加一个附加参数来命名条形,例如name = ~ProductId

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

enter image description here