Как сделать одну гистограмму из сгруппированных столбцов в R
У меня есть следующий набор данных:
year type count
1560 Person 2
1560 Public 1
1560 Thing 1
1578 Academic 1
1578 Public 1
1578 Thing 1
1582 Person 3
1582 Public 3
1582 Thing 3
...
Моя цель состоит в том, чтобы построить этот набор данных в виде трех разноцветных гистограмм на одном графике относительно группы / типа. Ось X должна представлять год, в то время как должно быть четыре ячейки (по одной для каждого типа [Персона / Общественность / Вещи / Академическая] для каждого года, представляющих счет для этой группы).
На данный момент у меня есть следующий код R:
dat <- read.csv(
file = filename
,header = T
,sep = "\t"
,quote = "\""
,row.names = NULL
,fileEncoding = "UTF8"
,stringsAsFactors = F);
melt_df <- melt(dat, id.vars = c("year","type"), measure.vars = c("count"));
ggplot(melt_df, aes(x = year, y = value, fill = variable)) +
geom_bar(stat = 'summary', fun.y = sum) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
scale_y_continuous(limits=c(0,155), breaks=seq(0,155,5)) +
scale_x_continuous(limits=c(1550,2000), breaks=seq(1550,2000,10));
Это приводит к следующему графику: ggplot из набора данных выше
Кто-нибудь может указать мне правильное направление, как это сделать?
Пожалуйста, не предлагайте переупорядочивать набор данных следующим образом:
year Person Public Thing Academic
1560 2 1 1 0
...
Конечно, я могу построить этот набор данных без проблем, но это не тот формат, которого я могу ожидать, поэтому было бы неплохо поработать с набором данных выше.
1 ответ
Просто делай
ggplot(d, aes(factor(year), count, fill = type)) +
geom_col(position = "dodge")
данные
d <- read.table(text="year type count
1560 Person 2
1560 Public 1
1560 Thing 1
1578 Academic 1
1578 Public 1
1578 Thing 1
1582 Person 3
1582 Public 3
1582 Thing 3", header=T)