web-dev-qa-db-ja.com

Rで軸ラベルが重ならないようにする

ラベルのフォントサイズを大きくしたグラフにデータをプロットしたいと思います。

x = c(0:10)
y = sin(x) + 10

plot (
    x, y, type="o",
    xlab = "X values",
    ylab = "Y values",
    cex.axis = "2",
    cex.lab = "2",
    las = 1
)

残念ながら、y軸の数字はy軸のラベルと重なっています。 marを使おうとしましたが、うまくいきませんでした(ちなみに、plotコマンドで直接使用できるグラフィックパラメーターと、par()メソッドで設定する必要のあるグラフィックパラメーターを見つけるにはどうすればよいですか?)。

ラベルが重ならないようにするにはどうすればよいですか?

ご協力いただきありがとうございます。

スヴェン

11
R_User

par(mar)を使用してプロットマージンを増やし、par(mgp)を使用して軸ラベルを移動します。

par(mar = c(6.5, 6.5, 0.5, 0.5), mgp = c(5, 1, 0))
#Then call plot as before

ヘルプページで?parplotで直接使用できるパラメーターと、parを介して呼び出す必要のあるパラメーターについて説明します。

「par()」を呼び出すことによってのみ設定できるパラメータがいくつかあります。

    • ‘"ask"’,

    • ‘"fig"’, ‘"fin"’,

    • ‘"lheight"’,

    • ‘"mai"’, ‘"mar"’, ‘"mex"’, ‘"mfcol"’, ‘"mfrow"’, ‘"mfg"’,

    • ‘"new"’,

    • ‘"oma"’, ‘"omd"’, ‘"omi"’,

    • ‘"pin"’, ‘"plt"’, ‘"ps"’, ‘"pty"’,

    • ‘"usr"’,

    • ‘"xlog"’, ‘"ylog"’

 The remaining parameters can also be set as arguments (often via
 ‘...’) to high-level plot functions such as ‘plot.default’,
 ‘plot.window’, ‘points’, ‘lines’, ‘abline’, ‘axis’, ‘title’,
 ‘text’, ‘mtext’, ‘segments’, ‘symbols’, ‘arrows’, ‘polygon’,
 ‘rect’, ‘box’, ‘contour’, ‘filled.contour’ and ‘image’.  Such
 settings will be active during the execution of the function,
 only.  However, see the comments on ‘bg’ and ‘cex’, which may be
 taken as _arguments_ to certain plot functions rather than as
 graphical parameters.
18
Richie Cotton

概念的にはひどいですが、手っ取り早い方法はparを使用し、ylabに改行を追加することです。

x = 0:10
y = sin(x) + 10

par(mar=c(5,7,4,2))
plot (
    x, y, type="o",
    xlab = "X values",
    ylab = "Y values\n",
    cex.axis = "2",
    cex.lab = "2",
    las = 1
)

plotで直接設定できるパラメータについては、?plot.default?plot.xy...の引数を受け取るので見てください。 localWindowlocalBoxのような文書化されていない関数(私が見つける限り)への呼び出しもいくつかありますが、それらがどうなるかわかりません。無視されているだけだと思います。

2
Backlin

Mgpパラメーターをtitle()関数に入れると、後でデフォルトをリセットする必要がなくなります。このように、パラメーターは関数によって追加されたラベルにのみ作用します。このような:

plot (
x, y, type="o",
xlab = "",         #Don't include xlab in main plot
ylab = "Y values",
cex.axis = "2",
cex.lab = "2",
las = 1
)
title(xlab="X values"
 ,mgp=c(6,1,0))    #Set the distance of title from plot to 6 (default is 3).
0
MatW