【问题标题】:Replicate `layout` in `grid`/`ggplot` [duplicate]在`grid`/`ggplot`中复制`layout` [重复]
【发布时间】:2014-07-07 14:02:18
【问题描述】:

我正在尝试复制以下代码,但直方图被替换为ggplot 调用。所以,这行得通:

layout(matrix(c(1, 2, 3, 4, 4, 3, 4, 4, 5), ncol=3))
hist(1:20)
hist(1:40)
hist(1:60)
hist(1:80)
hist(1:90)

这不是(每个 ggplot 创建一个新的全尺寸图像而不是布局的一部分):

layout(matrix(c(1, 2, 3, 4, 4, 3, 4, 4, 5), ncol=3))
ggplot(data.frame(x=1:20)) + stat_bin(aes(x=x))
ggplot(data.frame(x=1:40)) + stat_bin(aes(x=x))
ggplot(data.frame(x=1:60)) + stat_bin(aes(x=x))
ggplot(data.frame(x=1:80)) + stat_bin(aes(x=x))
ggplot(data.frame(x=1:90)) + stat_bin(aes(x=x))

第一段代码产生以下布局:

我如何使用ggplot 以与第一个layout 调用相同的方式排列图?

【问题讨论】:

    标签: r plot ggplot2


    【解决方案1】:

    layout() 仅适用于基本图形。 ggplot 使用具有不同方式或排列图的网格图形。尝试查看multiplot helper function。它有一个layout= 参数,与layout 函数非常相似。例如

    multiplot(layout=matrix(c(1, 2, 3, 4, 4, 3, 4, 4, 5), ncol=3),
        ggplot(data.frame(x=1:20)) + stat_bin(aes(x=x)),
        ggplot(data.frame(x=1:40)) + stat_bin(aes(x=x)),
        ggplot(data.frame(x=1:60)) + stat_bin(aes(x=x)),
        ggplot(data.frame(x=1:80)) + stat_bin(aes(x=x)),
        ggplot(data.frame(x=1:90)) + stat_bin(aes(x=x))
    )
    

    【讨论】:

      猜你喜欢
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 2021-07-20
      • 1970-01-01
      相关资源
      最近更新 更多