ggplot:创建具有自由刻度的面网格

moo*_*ooh 3 r ggplot2

在 ggplot 中,我想创建一个 y 轴自由的面网格。此scales选项可用,facet_wrap()但我想保留网格布局。我附上了我想要的绘制示例。

具有自由 y 轴的面网格示例

编辑:我添加了一些卡路里代码

# Create data
nX <- 3
nY <- 3
nVal <- 2
df <- data.frame(M = sort(rep(paste0("M",1:nX), nVal * nY)),
                 n = rep(sort(paste0("n",rep((1:nY)-1, nVal))),nX),
                 G = rep(1:2,nX * nY),
                 val = c(100,300,20,10,1,2,10,25,NA,NA,0.1,0.2,25,27,2,5,0.5,0.6))

# Delete observations to resemble my data
df <- subset(df, !is.na(val))

# scales does not work in facet_grid(), thus obscuring trends for low values
ggplot(df, aes(x = G,
               y = val)) +
  geom_line()+
  ylim(0,NA)+
  facet_grid(n ~ M,scales = "free_y")
Run Code Online (Sandbox Code Playgroud)

带小面网格

请注意,低值没有可见的趋势,因为在网格中它们被高值遮盖了。

# the grid is lost in facet_wrap()
ggplot(df, aes(x = G,
               y = val)) +
  geom_line()+
  ylim(0,NA)+
  facet_wrap(n+M~.,scales = "free_y")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意,网格布局丢失了。

teu*_*and 8

ggh4x 的 dev/github 版本facet_grid2()允许在网格布局中使用这些独立的轴。(免责声明:我是 ggh4x 的作者。)如果您发现任何错误或不清楚的文档,请随时在 github 上留下问题,因为我认为这还没有经过很多现场测试。

library(ggplot2)
library(ggh4x) # devtools::install_github("teunbrand/ggh4x")

# Create data
nX <- 3
nY <- 3
nVal <- 2
df <- data.frame(M = sort(rep(paste0("M",1:nX), nVal * nY)),
                 n = rep(sort(paste0("n",rep((1:nY)-1, nVal))),nX),
                 G = rep(1:2,nX * nY),
                 val = c(100,300,20,10,1,2,10,25,NA,NA,0.1,0.2,25,27,2,5,0.5,0.6))

# Delete observations to resemble my data
df <- subset(df, !is.na(val))

# scales does not work in facet_grid(), thus obscuring trends for low values
ggplot(df, aes(x = G,
               y = val)) +
  geom_line()+
  ylim(0,NA)+
  facet_grid2(n ~ M,scales = "free_y", independent = "y")
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v1.0.0)于 2021-06-09 创建