R Plotly覆盖条形图

时间:2017-07-31 11:48:48

标签: r plotly

简而言之:使用RPlotly包,我可以创建一个叠加条形图,其中使用x轴上相同的位置显示2个系列吗?经过相当多的谷歌搜索,我找不到答案。

例如此可视化:

enter image description here

使用Plotly和R:

创建分组(未覆盖)堆积条的代码
months = 1:12
n1 = runif(12, min = 0, max = 1)
n2 = runif(12, min = 0, max = 1)
dfPlot = data.frame(months, n1, n2)

plot_ly(x = dfPlot [,1],
        y = dfPlot [,2],
        type = 'bar') %>%
add_trace(x = dfPlot[,1],
          y = dfPlot[,3],
          type = 'bar')

enter image description here

如何调整图表以使系列覆盖?关于如何以类似的方式可视化相同信息但使用不同逻辑的建议也非常受欢迎!

2 个答案:

答案 0 :(得分:3)

使用plotlyggplot2

的开发版本来实现此目的的一种方法
#devtools::install_github('hadley/ggplot2')

library(ggplot2)

p <- ggplot(dfPlot) +
  geom_col(aes(x = month.abb[months], y = n1), 
           fill = "blue", width = 0.2) +
  geom_col(aes(x = month.abb[months], y = n2), 
           alpha = 0.3, fill = "red", width = 0.6) +
  labs(title = "Overlay geom_cols", x = "Months", y = "Measure") +
  theme_minimal()

plotly::ggplotly(p)

enter image description here

答案 1 :(得分:0)

使用选项barmode = 'overlay'添加布局 并更改其中一个数据集的宽度

months = 1:12
n1 = runif(12, min = 0, max = 1)
n2 = runif(12, min = 0, max = 1)
dfPlot = data.frame(months, n1, n2)

plot_ly(x = dfPlot [,1],
    y = dfPlot [,2],
    type = 'bar', name = "n1") %>%
    add_trace(x = dfPlot[,1],
        y = dfPlot[,3],
        type = 'bar', width = 0.3, name = "n2") %>%
  layout(barmode = 'overlay')

enter image description here