我使用par()命令在图形设备中创建一行图并运行前两个图:
par(mfrow = c(1, 4))
hist(mydata)
boxplot(y ~ x)
现在让我们说boxplot是错误的,我想用一个新的替换它。默认情况下,下一个绘图会转到前一个绘图的左侧(如果是多行布局,则会在下面的一行,第一列),保留前一个绘图。
有没有办法在多时隙网格区域中指定下一个绘图的位置?
答案 0 :(得分:3)
要指定多时隙网格区域中下一个绘图的位置,我更喜欢使用函数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)
答案 1 :(得分:2)
基本图形模型是纸上墨水,不允许修改。 lattice和ggplot模型基于可以修改的列表。您可以使用lines
,points
“返回”添加项目,并指出您可以将焦点更改为特定面板,但删除或替换内容....不可能。重新运行代码应该不是一个大问题,是吗?像素非常便宜。
答案 2 :(得分:2)
您可以指定要绘制的下一帧使用mfg
参数par
。有关详细信息,请参阅?par
。所以像这样的命令:
par(mfg=c(1,2))
将意味着下一个高级别的情节将转到第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')
这样可以在屏幕上查看,但是如果导出或打印你需要小心,在某些情况下,图形文件的打印机或解释器会将白色矩形解释为“什么都不做”,你会再次看到两个情节。
一般情况下,最好在脚本窗口中创建超过一行或两行代码的绘图,这样,如果要更改某些内容,可以编辑脚本,只需从头开始重新创建整个绘图,而不是依赖于像这样的技巧。