我正在尝试使用ggplot的功能facet_wrap相互绘制4个图形。地块的位置从上到下依次为:中部,东部,北部,西部。但是,我希望顺序为:东部,中部,北部,西部。我的代码看起来像这样...
region_plot = ggplot(region_data, aes(fill = Disease, x = Year, y = region_data$Average_rate)) +
ylab("Average Rate") +
geom_bar(position="stack", stat="identity") +
scale_fill_manual("legend", values = c("Lyme Disease - Confirmed" = "red", "Lyme Disease - Probable" = "grey")) +
theme_bw() +
theme(panel.border = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.line = element_line(colour = "black")) +
ylim(0, 260) +
facet_wrap(vars(Zone)) +
facet_grid(Zone ~ ., scales = "free_y")
region_plot
堆叠图时是否可以更改图的顺序?
将Zone
变成factor
。
一些假数据:
set.seed(42)
dat <- data.frame(dir=sample(c("North", "East", "West", "South"), size=100, replace=TRUE), x=runif(100), y=runif(100))
地块:
library(ggplot2)
ggplot(dat, aes(x, y)) + geom_point() + facet_grid(dir ~ .) + labs(title="Order: alphabetic")
dat$dirfctr <- factor(dat$dir, levels=c("North", "South", "East", "West"))
ggplot(dat, aes(x, y)) + geom_point() + facet_grid(dirfctr ~ .) + labs(title="Order: factor")
两个注意事项:
我生成了第二个变量并使用了它;其他SO答案(或非现场教程)可能只是将原始变量替换为factor
...但我喜欢将原始变量保留为character
,因为在开发过程中,我经常玩弄各种与两个分开(但这只是一个偏好);和
如果有可能在数据中弹出其他级别,我倾向于通过编程方式生成levels=
参数;否则,您会在自己的因素中找到NA
。另一种选择是,您总是先想要一些东西,而其他都不重要,在这种情况下,levels=c("North", setdiff(c("North"), unique(dat$dir)))
是一种方法。有一些实用程序/功能/软件包可帮助您管理因素/水平。