在R
中,我使用ggplot2
绘制了样本(准确地说是一周中的几天)中几个组的几个变量随时间变化的曲线,一个人工样本(使用适合绘制的长数据)如下所示:
library(tidyverse)
groups1 <- rep(1:2, each = 7 * 100)
groups2 <- rep(rep(1:7, times = 2), each = 100)
x <- rep(1:100, times = 14)
values <- c(rnorm(n = 700), rgamma(n = 700, shape = 2))
data <- tibble(x, groups1, groups2, values)
data %>% ggplot(mapping = aes(x = x, y = values)) + geom_line() + facet_grid(groups2 ~ groups1)
它给出了
在本例中,第一个变量(显示在左列中)具有无限范围,而第二个变量(显示在右列中)为弱正。
我想通过允许Y轴在图中的列之间不同来反映这一点,即分别为绘制的两个变量设置Y轴限值。然而,为了便于对两个变量中的每一个变量的不同组进行直观比较,我还想在每列内具有相同的Y轴。
我已经查看了facet_grid()
的scales
选项,但它似乎不能完成我想要的任务。
- 传递
scales = "free_x"
允许Y轴在各行之间变化,而 - 传递
scales = "free_y"
允许X轴跨列变化,但 - 不存在允许 * Y * 轴跨 * 列 * 变化的选项(大概也不存在跨行的X轴)。
像往常一样,我试图找到解决办法,但一无所获。非常感谢你的帮助!
1条答案
按热度按时间j1dl9f461#
我认为最简单的方法是为每个面列创建一个图,然后用{patchwork}之类的东西绑定它们。要获得面的外观,您仍然可以添加一个面层。
创建于2023年1月11日,使用reprex v2.0.2