Столбики ошибок на диаграмме с накоплением, используя график или ggplotly - PullRequest
1 голос
/ 21 января 2020

Мне нужно преобразовать в виджет простой 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')

Это создает полосы ошибок для всех долей стека гистограмма, в то время как мне нужна только одна ошибка в верхней части гистограммы с накоплением.

Любая помощь приветствуется

1 Ответ

1 голос
/ 21 января 2020

Вы можете подготовить 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')

enter image description here

...