ggplot2: столбчатая диаграмма на разных столбцах - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть следующие примерные данные с тремя разными типами затрат и столбцом года:

library(tidyverse)

# Sample data
costsA <- sample(100:200,30, replace=T)
costsB <- sample(100:140,30, replace=T)
costsC <- sample(20:20,30, replace=T)
year <- sample(c("2000", "2010", "2030"), 30, replace=T)
df <- data.frame(costsA, costsB, costsC, year)

Моя цель состоит в том, чтобы отобразить эти затраты в столбчатой ​​диаграмме с накоплением, чтобы я мог сравнить среднее значение.затраты между тремя категориями года.Для этого я агрегировал значения:

df %>% group_by(year) %>%
  summarise(n=n(),
            meanA = mean(costsA),
            meanB = mean(costsB),
            meanC = mean(costsC)) %>%
ggplot( ... ) + geom_bar()

Но как мне теперь построить график?На оси x должны быть годы, а на оси y - суммированные затраты.

example

1 Ответ

0 голосов
/ 25 февраля 2019

Вы должны преобразовать сводные данные в аккуратный (-ish) формат, чтобы создать график, подобный тому, который вы опубликовали.В tidy-verse это можно сделать с помощью функции gather, в которой вы преобразуете несколько столбцов в два столбца пар ключ-значение.Например, следующий код генерирует рисунок ниже.

df %>% group_by(year) %>%
  summarise(n=n(),
            meanA = mean(costsA),
            meanB = mean(costsB),
            meanC = mean(costsC)) %>% 
  gather("key", "value", - c(year, n)) %>%
  ggplot(aes(x = year, y = value, group = key, fill = key)) + geom_col()

При gather("key", "value", - c(year, n)) три столбца (costA, costB, costC) заменяются парами ключ-значение.

enter image description here

...