linea horizontal grilla ggplot abline r graph gridlines

horizontal - Línea de rejilla consistente con garrapatas en el eje.



plot arguments in r (4)

Me avergüenza hacer esta simple pregunta, pero he estado en mi mente durante varios días cada vez que creo un argumento:

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

Quiero colocar las cuadrículas justo en el lugar donde se etiquetan los ejes, es decir, en 2, 4, 6, 8, 10 en el eje x y, de manera similar, en 3, 4, 5, 6, 7, 8, 8 en el eje y.

Quiero automatizar el proceso como cada vez que el tamaño de la parcela cambia, el comportamiento de la etiqueta predeterminada cambia. Vea la siguiente trama:


Descripción de la ?grid de los argumentos nx y ny :

Cuando es NULL, como predeterminado, la cuadrícula se alinea con las marcas en el eje predeterminado correspondiente (es decir, las marcas de verificación calculadas por axTicks)

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


La respuesta que se proporciona 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 cuadrícula está colocando nx líneas de cuadrícula en el espacio del usuario, pero la gráfica está agregando un 4% de espacio adicional en cada lado. Puedes tomar el control de esto. Si xaxs="i", yaxs="i" a su gráfico, se desactivará el espacio adicional. Pero luego se cortará el punto superior derecho, por lo que deberá cambiar los valores xlim e ylim y cambiar nx para que coincidan


Para la posteridad, aquí está la manera prolongada 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")


Para referencia, hay una manera de controlar los parámetros de la cuadrícula y los ejes directamente desde el comando plot (), si no estamos definiendo un intervalo de marca personalizado:

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

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

Cuando se usa un intervalo de tics personalizado, lo más fácil es dibujar la cuadrícula 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)

Más información sobre los intervalos de marcación personalizados en este hilo y here para la alineación de la cuadrícula.