гистограмма ggplot общей и конкретной категории

#r #ggplot2

#r #ggplot2

Вопрос:

Возможно ли в ggplot использовать эти данные:

 months <-rep(c("jan", "feb", "mar", "apr", "may", "jun", 
               "jul", "aug", "sep", "oct", "nov", "dec"), 2)
chickens <-c(1, 2, 3, 3, 3, 4, 5, 4, 3, 4, 2, 2)
eggs <-c(0, 8, 10, 13, 16, 20, 25, 20, 18, 16, 10, 8)
values <-c(chickens, eggs)
type <-c(rep("chickens", 12), rep("eggs", 12))
mydata <-data.frame(months, values, type)
  

Затем…

 mydata$months <-factor(mydata$months, 
                      levels = c("jan", "feb", "mar", "apr", "may", "jun",
                                 "jul", "aug", "sep", "oct", "nov", "dec"))
  

Итак, я могу построить такой график

 p <-ggplot(mydata, aes(months, values))
p  geom_bar(stat = "identity", aes(fill = type), position = "dodge")
  

Но вместо цыплят и яиц я хочу создать график, который показывает значения для Total и для «цыплят», так что в основном у вас будет столбец для total и один для сравнения% цыплят

Что-то вроде этого, но только для total amp; chickens, поэтому у меня может быть другой график сравнения total и яиц

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

Ответ №1:

Сначала вы можете создать данные для построения графика.

 library(dplyr)
library(ggplot2)

mydata %>%
  filter(type == 'chickens') %>%
  bind_rows(mydata %>%
  group_by(months) %>%
  summarise(values = sum(values), 
            type = 'total')) -> data
  

Затем вы можете использовать

 ggplot(data)   aes(months, values, fill = type)   
    geom_bar(stat = "identity", position = "dodge")
  

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

Или диаграмма с накоплением

 ggplot(data)   aes(months, values, fill = type)   geom_bar(stat = 'identity')
  

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

Комментарии:

1. Ронак, что происходит с type = ‘total’ в функции суммирования

2. Чтобы объединить два фрейма данных (один с цыпленком, а другой с итогами), нам нужен type столбец в обоих из них. type = 'chicken' В одном из них уже есть столбец, поэтому мы создаем столбец с type = 'total' другим.