Barplot, используя ggplot2

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

cars    trucks  suvs
1          2    4
3          5    4
6          4    6
4          5    6
9          12   16

Я пытаюсь нарисовать гистограмму для этих данных. В настоящее время я могу сделать это с помощью barplot:

barplot(as.matrix(autos_data), main="Autos", 
         ylab= "Total",beside=TRUE, col=rainbow(5))

Создание этого графика:

Bar plot

Итак, мои вопросы: Могу ли я использовать ggplot2 для рисования такого графика? В частности - как использовать огранку или другие варианты разделения графика по дням недели? Если да, то как это сделать? Кроме того, как использовать фасет для создания другого макета?

Ответы

Ответ 1

Это было задано много раз. Ответ заключается в том, что вы должны использовать stat="identity" в geom_bar, чтобы сообщить ggplot, чтобы не суммировать ваши данные.

dat <- read.table(text="
cars    trucks  suvs
1   2   4
3   5   4
6   4   6
4   5   6
9   12  16", header=TRUE, as.is=TRUE)
dat$day <- factor(c("Mo", "Tu", "We", "Th", "Fr"), 
             levels=c("Mo", "Tu", "We", "Th", "Fr"))

library(reshape2)
library(ggplot2)

mdat <- melt(dat, id.vars="day")
head(mdat)
ggplot(mdat, aes(variable, value, fill=day)) + 
  geom_bar(stat="identity", position="dodge")

enter image description here