我使用 par() 命令在图形设备中创建一行图并运行前 2 个图:
par(mfrow = c(1, 4))
hist(mydata)
boxplot(y ~ x)
现在假设箱线图是错误的,我想用一个新的来替换它。默认情况下,下一个图位于前一个图的左侧(或在多行布局的情况下,下一行,第一列),前一个图保持不变。
有没有办法在多图网格区域中指定下一个图的位置?
要在多图网格区域中指定下一个图的位置,我更喜欢使用函数layout
. 该layout
功能提供了mfrow
和mfcol
设置的替代方案。例如,等价于par(mfrow = c(1, 4))
:
layout(matrix(c(1, 3, 2, 4), byrow=TRUE, ncol=4))
或者
layout(matrix(c(1, 2, 3, 4), byrow=TRUE, ncol=4))
该函数layout.show()
可能有助于可视化创建的图形区域。下面的代码创建了一个图形,可视化在前面的示例中创建的布局:
layout.show(4)
基本图形模型是纸上墨水,不允许修改。lattice 和 ggplot 模型基于可以修改的列表。您可以使用“返回”添加项目lines
,points
并且正如指出的那样,您可以将焦点更改为特定面板,但要删除或替换内容......不可能。重新运行代码应该不是什么大问题,不是吗?像素非常便宜。
mfg
您可以使用 to 的参数指定要绘制的下一帧par
。详情请参阅?par
。所以像这样的命令:
par(mfg=c(1,2))
将意味着下一个高级图将转到第一行第二列中的图。这可用于以您自己的自定义顺序进行绘图。但是,layout
在大多数情况下,使用它可能更容易更好。
当您使用它来指定要在 R 中绘制的框架时,假定该框架已准备好在其中绘制,它不会删除已经存在的任何内容,因此如果那里有一个现有的图,它将被绘制出来,您可能会看到两者情节,它看起来并不漂亮。
您可以在现有绘图的顶部绘制一个矩形,为自己提供一个空白框以使用如下代码进行绘图:
par(xpd=NA)
rect( grconvertX(0, from='nfc'), grconvertY(0,from='nfc'),
grconvertX(1,from='nfc'), grconvertY(1, from='nfc'),
col='white',border='white')
这可以在屏幕上查看,但在导出或打印时需要小心,在某些情况下,图形文件的打印机或解释器会将白色矩形解释为“什么都不做”,您将再次看到两者情节。
一般来说,最好在脚本窗口中绘制超过一行或两行代码的绘图,这样如果您想更改某些内容,您可以编辑脚本并从头开始重新创建整个绘图,而不是依赖这样的技巧.