我一直在使用 R 和 ggplot 处理一些流行病学数据。我使用以下代码绘制了人口金字塔:
plot1 <- ggplot(pt.indig, aes(x=agecat, fill=gender)) +
geom_bar(position="dodge") +
scale_fill_brewer("Gender", palette="Set1") +
scale_y_continuous(breaks=c(0:10), minor_breaks=NULL) + coord_flip() +
labs(y="Indigenous Patients", x=NULL) + coord_flip() +
theme_bw() + theme(axis.text.y=element_text(hjust=-0.1))
plot2 <- ggplot(pt.nind, aes(x=agecat, fill=gender)) +
geom_bar(aes(y=..count..*(-1)), position="dodge") +
scale_fill_brewer(palette="Set1") + coord_flip() +
scale_y_continuous(breaks=seq(-11,0,1), labels=abs(seq(-11,0,1))) +
labs(x=NULL, y="Non-Indigenous Patients") +
theme(legend.position="none", axis.text.y=element_blank(), axis.ticks.y=element_blank())
multiplot(plot2, plot1, cols=2)
生成此图:
我想对图表做的是:
- 使两个地块的相对大小相同
- 水平,所以条是成比例的
- 垂直,因此年龄类别正确排列
- 将左图稍微靠近 y 轴标签(或跨标签,但使用 hjust 会替换较短的标签(NA 和 <10 年旧标签))
- 让 Non-indig 10-14 岁的男性吧台显示与其他人一样的宽度
- (理想情况下,使 NA 条颜色相同,但不如其他条重要)
非常感谢帮助。