2011-11-10 3 views
20

soy vergüenza de hacer esta simple pregunta, pero ha estado en patear mi mente durante varios días cada vez que se crea una trama:línea de cuadrícula en consonancia con las garrapatas en el eje

plot (x = 1:10, y = rnorm (10, 5, 2)) 
grid (10,10, lty = 6, col = "cornsilk2") 

Quiero posicionar las rejillas de la derecha en donde los ejes están etiquetados, es decir, en 2, 4, 6, 8, 10 en el eje x y de manera similar 3, 4, 5, 6, 7, 8 en el eje y.

enter image description here

Quiero automatizar el proceso siempre que el tamaño de la parcela cambia los cambios de comportamiento etiqueta predeterminada. Ver la figura siguiente:

enter image description here

Respuesta

30

De ?grid descripción de los nx y ny argumentos:

Cuando NULL, como por defecto, la rejilla se alinea con las marcas de graduación en los correspondientes ejes predeterminados (es decir, ticks marcados por axTicks)

plot (x = 1:10, y = rnorm (10, 5, 2)) 
grid (NULL,NULL, lty = 6, col = "cornsilk2") 
+4

+1 Por ser mejor al leer los archivos de ayuda que yo. – Andrie

+0

+1 para explicar los archivos de ayuda y -1 para mí mismo por no entender bien la ayuda ... – jon

+0

Esto no parece funcionar con marcas de tiempo en el eje X. ¿Algunas ideas? – slovon

4

Para la posteridad, aquí es la manera de largo aliento de hacerlo manualmente:

plot (x = 1:10, y = rnorm (10, 5, 2)) 
grid (lty = 6, col = "cornsilk2") 

xaxp <- par("xaxp") 
yaxp <- par("yaxp") 

abline(v=seq(xaxp[1], xaxp[2], (xaxp[2]-xaxp[1])/xaxp[3]), lty=6, col = "cornsilk2") 
abline(h=seq(yaxp[1], yaxp[2], (yaxp[2]-yaxp[1])/yaxp[3]), lty=6, col = "cornsilk2") 
18

Como referencia, hay una manera de controlar la red y los ejes parámetros directamente desde el comando plot(), si no somos definición de un intervalo de marcación personalizado:

plot(x = 1:10, y = rnorm(10, 5, 2), xlim=c(1, 10), ylim=c(1, 10), panel.first=grid()) 

La documentación de plot.default() proporciona más información sobre estos parámetros.

Cuando se utiliza una costumbre garrapatas intervalo, lo más fácil es llamar la rejilla usando abline:

plot(x = 1:10, y = rnorm(10, 5, 2), xaxp=c(1, 10, 10), yaxp=c(1, 10, 10), axes=FALSE) 
axis(1, 1:10) 
axis(2, 1:10) 
abline(h=1:10, v=1:10, col="gray", lty=3) 

grid example

Más información acerca de los intervalos de garrapatas personalizados en this thread y here para la alineación de la rejilla.

1

La respuesta proporcionada here es mucho más sencilla, aunque puede que no le guste la falta de "espacio libre" en cada extremo de los ejes. En breve,

El problema es que la rejilla está poniendo líneas de cuadrícula nx en el espacio de usuario, pero trama es la adición de 4% de espacio adicional en cada lado. Puede tomar el control de esto. Si agrega xaxs="i", yaxs="i" a su parcela, se desactivará el espacio adicional . Pero entonces su punto superior derecho se cortará, por lo que necesita cambiar los valores xlim e ylim y cambiar nx para que coincida con

Cuestiones relacionadas