12

6つの図を3x2のレイアウトで1つの画像に出力しようとしています。上の行と下の2行の間に余分なスペースを配置したいと思います。これはRを使用して可能ですか?パーとプロットのドキュメントを調べましたが、適切なオプションが見つからないようです。

次にいくつかのサンプルコードを示します。

a = rnorm(100,100,10)
b = rnorm(100,100,10)

par(mfrow=c(3,2), oma=c(1,1,1,1), mar=c(2,2,2,2))
hist(a)
hist(b)
plot(a,b)
plot(a,b)
plot(a,b)
plot(a,b)

そのコードが出力するものは次のとおりです。


代替テキスト


これが私が出力したいものです(私はこの画像を外部エディタで変更しました)。上段と下段の間に余分なスペースがあることに注意してください。


代替テキスト


4

3 に答える 3

9

次の 3 つの方法が考えられます。

1)marグラフィック パラメータを使用してプロット マージンを設定する

現在のマージンを取得するには

currmar <- par()$mar

で新しいマージンを設定できます

par("mar"=c(5, 4, 4, 2))

for の数字は、下、左、上、右のマージンです (「 」を参照?par) 。

parプロットごとに複数の呼び出しを行うことができるため、上部のプロットに対してのみ下部マージンを変更できます。

2) レイアウトを使用して、不均一なレイアウト グリッドを生成します (?layout例については、を参照してください)。

3) プロットを .svg または .pdf で保存し、Inkscape (または任意のソフトウェア) を使用してプロットを移動します。

于 2010-09-03T19:24:13.803 に答える
9

layout()関数はあなたの友達です。たとえば、プロットマトリックスを定義できます

1 2
3 4
5 6
7 8

次に、3 番目と 4 番目に空のプロットを入れます。または、単に 6 に固執しpar、下部に余分なスペースを追加するように呼び出します。

于 2010-09-03T19:26:39.283 に答える
4

一緒に行くmarのが私のやり方だと思います。ただし、見た目どおり、すべてのプロットを同じにする必要があります。したがって、上下のすべてのプロットで、3月までに同じ量を取り除く必要があります。
あなたの場合、次の番号を使用できます
。1.行:par(mar=c(7,4,4,2))
2。行:par(mar=c(5,4,6,2))
3。行:par(mar=c(7,4,4,2))

このようにして、すべてのプロットが同じ高さを占めます。これを達成するために、各プロットで同じになるように1番目と3番目の数値を変更します。ただし、注意点:下の行のプロットの下に余分な空白があります。

于 2010-09-03T19:44:42.547 に答える