Столбчатая диаграмма того же типа переменных в ggplot2

#r #ggplot2 #bar-chart #stacked

#r #ggplot2 #гистограмма #сложенный

Вопрос:

Я пытаюсь создать гистограмму с накоплением, которая будет представлять эти данные. Переменная n_paper — это общее количество статей с этим методом, а переменная paper_ui — это количество статей, в которых используется индекс апвеллинга.

      n_papers paper_ui               methods
1        6        3                      AR
2        4        2                    ARMA
3        5        4                   ARIMA
4        1        0                  SARIMA
5        6        1     Loess decomposition
6        2        1 Classical decomposition
7        1        0   Exponential smoothing

ggplot(df,aes(x = methods, y = n_papers))   
  geom_bar(stat="identity", color="dodgerblue4", fill="dodgerblue4") 
  scale_x_discrete()   xlab("Time series methods")  
  ylab("Nº of papers")  
  theme(
    axis.title.x = element_text(size=15),
    axis.title.y = element_text(size=15),
    axis.text = element_text(size=12),
    axis.text.x = element_text(angle=45, hjust=1)
  )
 

Сюжет похож на этот, но я хочу, чтобы на этом графике была переменная paper_ui.
Спасибо!

Ответ №1:

Попробуйте это. Вам нужно преобразовать ваши данные в long, а затем построить график:

 library(ggplot2)
library(dplyr)
library(tidyr)
#Code
df %>% pivot_longer(-methods) %>%
  ggplot(aes(x = methods, y = value,color=name,fill=name))   
  geom_bar(stat="identity") 
  scale_x_discrete()   xlab("Time series methods")  
  ylab("Nº of papers")  
  theme(
    axis.title.x = element_text(size=15),
    axis.title.y = element_text(size=15),
    axis.text = element_text(size=12),
    axis.text.x = element_text(angle=45, hjust=1)
  )
 

Вывод:

введите описание изображения здесь

Некоторые используемые данные:

 #Data
df <- structure(list(n_papers = c(6L, 4L, 5L, 1L, 6L, 2L, 1L), paper_ui = c(3L, 
2L, 4L, 0L, 1L, 1L, 0L), methods = c("AR", "ARMA", "ARIMA", "SARIMA", 
"Loess decomposition", "Classical decomposition", "Exponential smoothing"
)), row.names = c(NA, -7L), class = "data.frame")