r - ggplot2 中的嵌套 facet_wrap()

标签 r ggplot2

假设我有这些数据:

set.seed(100)
mydf<-
data.frame(
day = rep(1:5, each=20),
id = rep(LETTERS[1:4],25),
x = runif(100),
y = sample(1:2,100,T)
)

如果我只想使用 facet_wrap() 绘制 id=="A" 的所有五天,我们会这样做:

ggplot(mydf[mydf$id=="A",], aes(x,y))  +  
       geom_tile() +
       facet_wrap(~day,ncol=1) 

给出: enter image description here

但是,如果我想在 2x2 网格中自动绘制其中的四个并排绘制(即显示 A、B、C、D),是否可以使用嵌套构面?我试过像这样在函数中做多个变量:

ggplot(mydf, aes(x,y))  +  
  geom_tile() +
  facet_wrap(~ day+id) 

但这给出了这个:

enter image description here

我正在寻找一种嵌套方法。每个面板中每天有五个多面行,每个图按 id 列/行。显然,对于少量绘图,我可以单独保存并使用 grid.arrange 等进行排列,但在实际数据中,我有很多绘图,因此希望尽可能自动化。

编辑:

作为对评论的回应——这是一种期望的输出:

enter image description here

最佳答案

试试这个,

p <- ggplot(mydf, aes(x,y))  +  
  geom_tile() +
  facet_wrap(~ day, ncol=1) 

library(plyr)
lp <- dlply(mydf, "id", function(d) p %+% d + ggtitle(unique(d$id)))
library(gridExtra)
grid.arrange(grobs=lp, ncol=2)

enter image description here

关于r - ggplot2 中的嵌套 facet_wrap(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202167/

相关文章:

python - 使用 python 获取股票数据-不使用 quandl

r - timeseries 和 dplyr,事件检测(datechange 问题)

r - 在 R 曲面图中插入 "cut off"字段

r - 将 X 轴标签与 X 轴上的第一个刻度文本左对齐

r - 在对象中存储自定义 ggplot 样式

R 传单 map - 根据所选图层组更改图例

r - 两列facet_grid,顶部带有条形标签

r - 如何在 R 中使用 ggMarginal 将箱线图添加到直方图

r - 将坐标引用系统设置为在 R 中创建的多边形

删除 geom_bar 中边框的底部边框