我有一个由分布在两个位置(即North
和South
)的八个站点(即A
、B
、C
... H
)组成的数据框。我已经使用facet_wrap()
为每个站点制作了一个数字,但是,我想添加一个额外的列标题来表示站点的位置。我该如何做呢?
示例数据
library(ggplot2)
library(dplyr)
set.seed(123)
df <- data.frame(matrix(ncol = 4, nrow = 24))
colnames(df)[1:4] <- c('location','site','x','y')
df$location <- rep(c('North','North','North','South','South','South'),4)
df$site <- c('A','A','A','E','E','E','B','B','B','F','F','F',
'C','C','C','G','G','G','D','D','D','H','H','H')
df$x <- rep(seq(0,12,4),6)
df$y <- rnorm(24,50,20)
df
示例图(缺少二级标题)
df %>%
mutate(across(site, factor, levels = c('A','B','E','F',
'C','D','G','H'))) %>%
ggplot(aes(x = x, y = y)) +
geom_point() +
geom_line() +
scale_x_continuous(breaks = seq(0,12,3),
limits = c(0,12)) +
scale_y_continuous(breaks = seq(0,max(df$y),5)) +
theme_bw() +
facet_wrap(~site, nrow = 2)
这里有一个类似的SO问题(link here),但是,当已经调用了scale_x_continuous()
函数时,我无法使它工作,并且不清楚该答案如何与同一轴上的多个标题一起工作。
下面是我正在寻找的输出示例。请注意,df$location
是辅助x轴标题,左边两列是North
站点,右边两列是South
站点。
2条答案
按热度按时间jm81lzqq1#
根据akrun的答案,可以通过在
strip_nested()
中将相应的元素设置为空来隐藏一个条带,不过我还没有找到删除冗余空间的方法。由reprex package(v2.0.1)于2023年1月5日创建
efzxgjgh2#
要按自己的意愿设置每个子标题的样式,可以执行以下操作:
现在,我们创建一个伪变量,为字母分配适当的facet行。