Избегайте перекрывающихся меток осей в R - PullRequest
11 голосов
/ 21 июля 2011

Я хочу нанести данные на график с большим размером шрифта для меток.

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 () -)?

Как можно избежать наложения ярлыков?

Спасибо за вашу помощь.

Sven

Ответы [ 3 ]

18 голосов
/ 21 июля 2011

Используйте 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

На странице справки ?par объясняется, какие параметры можно использовать непосредственно в plot, а какие нужно вызывать с помощью 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.
2 голосов
/ 21 июля 2011

Быстрый и грязный способ - использовать 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, так как они получат ... arugments. Есть также несколько вызовов недокументированных функций (насколько я могу найти), таких как localWindow и localBox, но я не знаю, что с ними происходит. Я предполагаю, что они просто проигнорированы.

0 голосов
/ 23 марта 2012

Вы можете поместить параметр 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).
...