我在一个情节里做一个情节.

(为了简单起见,我在这里使用curve(),但这里也指plot().)

curve(exp(x), 0, 1, col=4)
.op <- par(
  fig=c(grconvertX(c(.05, .4), to='ndc'),
        grconvertY(c(2, 2.75), to='ndc')),
  mar=c(1, 1, 1, 1),
  new=TRUE
)
curve(sin(x), 0, 2*pi)
par(.op)

enter image description here

for个循环中重复这一点基本上效果很好.然而,当我try 使用2x2 layout时,图形分布在四个不同的图形上,而不是显示在一个图形上.

layout(matrix(1:4, 2, 2))
for (i in 1:4) {
  curve(exp(x), 0, 1, col=4)
  .op <- par(
    fig=c(grconvertX(c(.05, .3), to='ndc'),
          grconvertY(c(2, 2.75), to='ndc')),
    mar=c(1, 1, 1, 1),
    new=TRUE
  )
  curve(sin(x), 0, 2*pi)
  par(.op)
}

出于某种原因,内在的par会扰乱外部的.我也try 了op <- par(mfrow=); ... par(op)而不是layout,但结果是一样的.

我怎么才能解决这个问题呢?

推荐答案

试着用screen代替.

split.screen(c(2,2))
for (i in 1:4) {
  screen(i)
  curve(exp(x), 0, 1, col=4)
  title(paste("i=",i))

  .op <- par(
    fig=c(grconvertX(c(.05, .3), to='ndc'),
          grconvertY(c(2, 2.75), to='ndc')),
    mar=c(1, 1, 1, 1),
    new=TRUE
  )
  curve(sin(x), 0, 2*pi)
  par(.op)
}

enter image description here

R相关问答推荐

在' geom_contour_filled()'中对齐两个gplot的 colored颜色 比例

为什么t使用ifelse()基于两个DF中的匹配观察创建新列不适用于此数据?

如何在x轴下方画一条带有箭头的线?

有没有方法将paste 0功能与列表结合起来?

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

根据收件箱中的特定值提取列名

名称输出pmap on tible

如何修复R码的置换部分?

在使用ggroove后,将图例合并在gplot中

在不安装软件包的情况下测试更新

如何在R中合并两个基准点?

标识R中多个列中缺少的唯一值

ComplexHEAT:使用COLUMN_SPLIT时忽略COLUMN_ORDER

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

R如何将列名转换为更好的年和月格式

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

计算多变量的加权和

在同一单元格中创建包含整数和百分比的交叉表

如何更改包中函数中的参数?

排序R矩阵的行和列