Ответ 1
ggplot2 лучше всего работает с "длинными" данными, где все данные находятся в одном кадре данных, а разные группы описываются другими переменными в кадре данных. С этой целью
DF <- rbind(data.frame(fill="blue", obs=dataset1$obs),
data.frame(fill="green", obs=dataset2$obs),
data.frame(fill="red", obs=dataset3$obs),
data.frame(fill="orange", obs=dataset3$obs))
где я добавил столбец fill
, который имеет значения, которые вы использовали в ваших гистограммах. Учитывая это, сюжет можно сделать с помощью:
ggplot(DF, aes(x=obs, fill=fill)) +
geom_histogram(binwidth=1, colour="black", position="dodge") +
scale_fill_identity()
где position="dodge"
теперь работает.
Вам не нужно использовать литеральный цвет заливки в качестве отличия. Вот версия, в которой вместо этого используется номер набора данных.
DF <- rbind(data.frame(dataset=1, obs=dataset1$obs),
data.frame(dataset=2, obs=dataset2$obs),
data.frame(dataset=3, obs=dataset3$obs),
data.frame(dataset=4, obs=dataset3$obs))
DF$dataset <- as.factor(DF$dataset)
ggplot(DF, aes(x=obs, fill=dataset)) +
geom_histogram(binwidth=1, colour="black", position="dodge") +
scale_fill_manual(breaks=1:4, values=c("blue","green","red","orange"))
Это то же самое, за исключением легенды.