2011-07-21 54 views
11

Quiero trazar los datos en un gráfico con un tamaño de letra más grande para las etiquetas.Evite superponer etiquetas de eje en 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 
) 

Lamentablemente, los números en el eje y se superponen a la etiqueta del eje y. Intenté usar mar, pero eso no funcionó (por cierto, ¿cómo puedo averiguar qué parámetros gráficos se pueden usar directamente en el comando de trazado y cuáles se deben establecer con el método par()?).

¿Cómo puedo evitar que las etiquetas se superpongan?

Gracias por su ayuda.

Sven

+0

Nota: Si desea mover la etiqueta del eje, imprimirlo por separado: http://stackoverflow.com/questions/5506046/how-do-i-put-more-space-between- the-axis-labels-and-axis-title-in-an-r-boxplot – BurninLeo

Respuesta

17

Utilice par(mar) para aumentar los márgenes de trazado y par(mgp) para mover la etiqueta del eje.

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

En la página de ayuda ?par se explica qué parámetros se pueden utilizar directamente en plot y cuáles deben ser llamados a través de par.

hay varios parámetros sólo se pueden establecer mediante una llamada a '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. 
+0

Cuando uso mgp, se mueven la etiqueta y, así como la etiqueta x. ¿También es posible mover solo la etiqueta y? ¿Hay un buen tutorial que enseñe esas cosas básicas? Siempre me pierdo en la ayuda ... :-( –

+2

Si no te gusta la ubicación predeterminada que el enfoque habitual es 'ylab =" "' y utiliza 'axis (..., line = )'. ? axis –

+0

@DWin: voy a intentar tu sugerencia. Ahora primero establezco'par (mgp) 'el título para un eje, luego'par (mgp)' de nuevo, y el'title() 'para el eje bext. –

2

La forma más rápida y sucia sería utilizar par y añadir una nueva línea en ylab, aunque es conceptualmente terrible.

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 
) 

En cuanto a los parámetros que puede establecer directamente en plot echar un vistazo a ?plot.default y ?plot.xy ya que recibir los ... arugments. También hay un par de llamadas a funciones no documentadas (por lo que puedo encontrar) como localWindow y localBox, pero no sé qué les sucede. Supongo que simplemente se ignoran.

0

usted puede poner el parámetro de MGP en la función del título() para evitar tener que reiniciar sus incumplimientos después. De esta forma, el parámetro solo actúa en la (s) etiqueta (s) añadidas por la función. de esta manera:

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). 
Cuestiones relacionadas