使用ggplot更改堆叠图的位置

问题描述 投票:0回答:1

我正在尝试使用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

堆叠图时是否可以更改图的顺序?

r ggplot2 graph facet-wrap
1个回答
0
投票

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")

side-by-side ggplots, alpha and factor order

两个注意事项:

  • 我生成了第二个变量并使用了它;其他SO答案(或非现场教程)可能只是将原始变量替换为factor ...但我喜欢将原始变量保留为character,因为在开发过程中,我经常玩弄各种与两个分开(但这只是一个偏好);和

  • 如果有可能在数据中弹出其他级别,我倾向于通过编程方式生成levels=参数;否则,您会在自己的因素中找到NA。另一种选择是,您总是先想要一些东西,而其他都不重要,在这种情况下,levels=c("North", setdiff(c("North"), unique(dat$dir)))是一种方法。有一些实用程序/功能/软件包可帮助您管理因素/水平。

© www.soinside.com 2019 - 2024. All rights reserved.