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)

これにより、次のプロット レイアウトが生成されます。(画像編集ソフトで赤文字を入れています)

ここに画像の説明を入力

これは、ボックスの外側にプロットするアプリケーションの 1 つです。表示されている領域にテキストをオーバープリントします。同様に、別のグラフィック要素をオーバープリントする必要がある場合もあります。たとえば、ボックスにまたがるルールを描画します。

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、領域の境界を越えて拡張するのが困難であることがわかります。取得xpd=TRUEする引数としてを使用してみましtextたが、成功しませんでした。おそらくそれを使用しています呼び出しの前に使用すると、機能することができますpar()text

于 2013-03-31T02:23:47.383 に答える
3

現在のプロット セットを超えるものを描画するpar(xpd=NA)。関数grconvertXgrconvertYを使用して、異なる座標系間で変換できます。

'ndc' 座標に変換して 1 つのプロットから位置を保存し、それらを別のプロットのユーザー座標に変換することができます。また、これらの関数を使用して、現在のプロット、図、またはデバイスに渡すための相対座標を見つけることもできます。その他の機能。例:

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 に答える