3

有时我在创作一个多部分的图形,并且我的布局很复杂,我想在框外绘制。(我形象地和字面地这么说)。

考虑使用R基本图形函数layout()设置复杂布局的示例:

## Define the layout regions
multiPartFigureLayout <- structure(c(4, 4, 1, 1, 2, 2, 3, 3, 8, 8, 
                                         5, 5, 1, 1, 2, 2, 3, 3, 8, 8, 
                                         9, 9, 1, 1, 2, 2, 3, 3, 8, 8, 
                                         6, 6, 1, 1, 2, 2, 3, 3, 8, 8, 
                                         7, 7, 1, 1, 2, 2, 3, 3, 8, 8), 
                                         .Dim = c(10L, 5L))

## Demonstrate the layout
win.graph(4, 5)
layout(multiPartFigureLayout)
layout.show(9)

这将产生以下绘图布局。(我使用图像编辑软件添加了红色文本)

在此处输入图像描述

这是在框外绘图的一种应用:在所示区域中叠印文本。同样,可能需要叠印另一个图形元素。例如,绘制一个跨越框的规则。

我知道可以扩展multiPartFigureLayout矩阵并在上方添加一个可以保存文本或规则的绘图区域。但我不想这样做:我想在多个布局区域上叠印它。

有没有办法使用基本图形来做到这一点,或者为此目的使用功能,或者以某种方式欺骗绘图功能?

4

2 回答 2

4
mtext("even longer test of overplotting to see if it extends across the plots" , line=-1, col="red")
?mtext

mtext如果您使用负“线”值,则可以在图形区域的内部和边界之间进行注释。(side 参数mtext默认为 3 (="top")。如果您尝试使用text,您会发现它难以扩展到区域边界之外。我尝试使用 withxpd=TRUE作为参数text来获取但没有成功。也许使用它withpar()text调用之前将允许它工作。

于 2013-03-31T02:23:47.383 回答
3

绘制超出当前绘图集的内容par(xpd=NA)。您可以使用这些函数在不同的坐标系grconvertX之间grconvertY进行转换。

您可以通过转换为“ndc”坐标来保存一个绘图中的位置,然后从这些坐标转换为另一个绘图中的用户坐标,您还可以使用这些函数查找相对于当前绘图、图形或设备的坐标以传递到其他功能。一个例子:

layout( matrix( c(1,2,3,2), 2 ) )
par(xpd=NA)
with(iris, plot(Sepal.Width, Sepal.Length, col=Species) )
save1.x <- grconvertX( 0.25, from='npc', to='ndc' )
save2.x <- grconvertX( iris$Sepal.Width[1], to='ndc' )
save2.y <- grconvertY( iris$Sepal.Length[1], to='ndc' )
with(iris, plot(Petal.Width, Petal.Length, col=Species) )
with(iris, arrows( Petal.Width[1], Petal.Length[1], 
   grconvertX( save2.x, from='ndc' ), 
   grconvertY( save2.y, from='ndc' ), col='orange' ) )
with( iris, plot( Petal.Length, Sepal.Length, col=Species ) )
segments( grconvertX( 0.75, from='npc' ), grconvertY(0.9, from='npc'),
   grconvertX( save1.x, from='ndc'), col='purple' )
于 2013-04-02T01:46:21.893 回答