#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'
другим.