堆叠条形图上的误差条,使用 plotly 或 ggplotly

Error bars on stacked barchart, using either plotly or ggplotly

我需要将一个简单的 ggplot(一个不确定的堆积条)转换为小部件。

数据:

 world.tot <- data.frame('country'='world', 'GHG'=c('CH4', 'CO2','N2O'), 
                         'emi'=c(6e+6, 3e+6, 1+6),
                         'unc.min'=8561406, 'unc.max'=14027350)

和 ggplot:

p2 <- ggplot(world.tot) +
        geom_bar(aes(x=country,y=emi,fill=GHG), stat='identity', position='stack' ) +
        geom_errorbar(aes(x=country, ymin=unc.min, ymax=unc.max), width=0.2) +
        theme(axis.title. x=element_blank(), axis.title. y=element_blank()) +
        theme(legend.position='none')

当我尝试时:ggplotly(p2) 仅转换堆叠条,而不转换误差条。有什么建议吗?

或者,我可以使用 plot_ly 来创建绘图,但无法添加错误栏:

plot_ly(world.tot, x=~country. y=~emi, color=~GHG,type=bar,
        error_y=~list(array(c(unc.min, unc.max))) %>% 
  layout(barmode='stack')

这会为堆叠直方图的所有份额生成误差条,而我只需要堆叠直方图顶部的一个错误。

感谢任何帮助

您可以准备一个data.frame,每组只有一个错误大小

library(dplyr)
world.err <- world.tot %>%
  group_by(country) %>%
  summarise(emi = sum(emi), unc.min = 8561406, unc.max = 14027350)

并将错误绘制为单独的轨迹

plot_ly(world.tot) %>%
  add_bars(x = ~country, y = ~emi, color = ~GHG, type='bar') %>%
  add_trace(x = ~country, y = ~emi, data = world.err,
              showlegend = F, mode='none', type='scatter',
              error_y = ~list(array = c(unc.min, unc.max), color = '#000000')) %>% 
  layout(barmode='stack')