我在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)

这给了我们

sample image

在本例中,第一个变量--如左栏所示--具有无限的范围,而第二个变量--如右栏所示--是弱正的.

我想在我的曲线图中反映这一点,允许Y轴不同于该曲线图中的across列,即分别为绘制的两个变量设置Y轴限制.然而,为了便于对两个变量中的每一个变量的不同组进行直观比较,我还希望每一列都有相同的Y轴within.

我已经考虑了从scalesfacet_grid()的选项,但它似乎无法实现我想要的效果.具体来说,

  • 超过scales = "free_x"将允许Y轴在各行之间变化,而
  • 超过scales = "free_y"将允许X轴在不同列之间变化,但是
  • 不存在允许Y个轴在columns上变化的选项(也不允许X轴在各行之间变化).

像往常一样,我试图找到解决方案,但没有取得任何成果.非常感谢您的帮助!

推荐答案

我认为最简单的方法是 for each 小平面列创建一个图,并用类似{patchwork}的东西将它们绑定在一起.要获得镶嵌面的外观,您仍然可以添加一个镶嵌层.

library(tidyverse)
library(patchwork)

groups1 <- rep(1:2, each = 7 * 100)
groups2 <- rep(rep(1:7, times = 2), each = 100)
x <- rep(1:100, times = 14)
set.seed(42) ## always better to set a seed before using random functions
values <- c(rnorm(n = 700), rgamma(n = 700, shape = 2))

data <- tibble(x, groups1, groups2, values)
data %>%
  group_split(groups1) %>%
  map({
    ~ggplot(.x, aes(x = x, y = values)) +
  geom_line() + 
  facet_grid(groups2 ~ groups1)
  }) %>%
  wrap_plots()

创建于2023-01-11年第reprex v2.0.2

R相关问答推荐

无法在我的情节中表现出显着的差异

从gtsummary包中使用tBL_strata()和tBL_summary()时删除变量标签

带有叠加饼图系列的Highmap

获取列中值更改的行号

R for循环返回到先前值

在R中使用download. file().奇怪的URL?

如何用书面利率绘制geom_bar图

将标识符赋给事件序列,避免错误观察

在带有`R`中的`ggmosaic`的马赛克图中使用图案而不是 colored颜色

如何在R中使用混合GAM模型只对固定的影响因素进行适当的预测?

循环遍历多个变量,并将每个变量插入函数R

是否有可能从边界中找到一个点值?

按两个因素将观测值分组后计算单独的百分比

在生成打印的自定义函数中,可以通过变量将线型或 colored颜色 设置为NULL吗?

使用函数从R中的列中删除标高

如何获取R chromote中的当前URL?

使用&Fill&Quot;在gglot中创建 colored颜色 渐变

如何编辑被动式数据表?

从多行中 Select 最小值

在R中,如果一个值在同一数据帧中的任何特定列中,如何计算?