2

我使用 par() 命令在图形设备中创建一行图并运行前 2 个图:

par(mfrow = c(1, 4))
hist(mydata)
boxplot(y ~ x)

现在假设箱线图是错误的,我想用一个新的来替换它。默认情况下,下一个图位于前一个图的左侧(或在多行布局的情况下,下一行,第一列),前一个图保持不变。

有没有办法在多图网格区域中指定下一个图的位置?

4

3 回答 3

3

要在多图网格区域中指定下一个图的位置,我更喜欢使用函数layout. 该layout功能提供了mfrowmfcol设置的替代方案。例如,等价于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)

在此处输入图像描述

于 2013-02-07T22:49:07.013 回答
2

基本图形模型是纸上墨水,不允许修改。lattice 和 ggplot 模型基于可以修改的列表。您可以使用“返回”添加项目linespoints并且正如指出的那样,您可以将焦点更改为特定面板,但要删除或替换内容......不可能。重新运行代码应该不是什么大问题,不是吗?像素非常便宜。

于 2013-02-07T22:31:50.543 回答
2

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')

这可以在屏幕上查看,但在导出或打印时需要小心,在某些情况下,图形文件的打印机或解释器会将白色矩形解释为“什么都不做”,您将再次看到两者情节。

一般来说,最好在脚本窗口中绘制超过一行或两行代码的绘图,这样如果您想更改某些内容,您可以编辑脚本并从头开始重新创建整个绘图,而不是依赖这样的技巧.

于 2013-02-07T23:40:18.103 回答