varias una studio personalizar modificar los leyendas graficos graficas grafica ggplot escala ejes como cambiar r

una - personalizar ejes en r



¿Cómo coloco más espacio entre las etiquetas del eje y el título del eje en un diagrama de caja R? (3)

Estoy creando un diagrama de caja en R con el siguiente código:

boxplot(perc.OM.y ~ Depth, axes = F, ylim = c(-0.6, 0.2), xlim = c(3.5, 5.5), lwd = 0.1, col = 8, ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5) axis(1, at = c(3.5, 4, 5, 5.5), labels = c(" ", "Shallow", "Deep", " "), cex.axis = 1.5) axis(2, cex.axis = 1.5)

El problema es que las etiquetas numéricas en el eje y actualmente se superponen con el título del eje. ¿Hay una manera de poner más espacio entre el título del eje y las etiquetas de número de eje?

Gracias


Acabo de encontrar esta solución muy sencilla y útil cuando quería reducir el espacio en blanco alrededor del diagrama (¡considere los límites de tamaño en los documentos de la conferencia!) Mientras que quería evitar la superposición del título de los ejes Y y los números grandes como las garrapatas.

Utilizo para establecer los títulos como texto y colocarlos donde quiera, después de configurar los márgenes manualmente:

Primero, establezca los márgenes a los valores arbitrarios:

par( mar=c(m1, m2, m3, m4) )

donde m1 a m4 son márgenes para cuatro lados (1 = abajo, 2 = izquierda, 3 = arriba y 4 = derecha).

Por ejemplo:

par( mar=c(3.1, 4.7, 2.3, 0))

Luego, al trazar, establece main = "", xlab = "" y ylab = "" (de lo contrario, su texto se superpondrá con este nuevo texto)

Finalmente, utilizando mtext (), configure los títulos de los ejes y el título del diagrama manualmente:

mtext(side=1, text="X axes title", line=0.5) mtext(side=2, text="Y axes title", line=3) mtext(side=3, text="Diagram title", line=1.5)

El parámetro de línea es la distancia desde el diagrama (los valores más pequeños lo acercan al diagrama).


Intente establecer el primer valor de mgp más grande. También querrás agrandar los márgenes, con mar .

par(mgp=c(5,1,0)) par(mar=c(5,6,4,2)+0.1)


## dummy data dat <- data.frame(Depth = sample(c(3:6), 20, replace = TRUE), OM = 5 * runif(20))

Agregue algo de espacio para las etiquetas y anotaciones del eje y, haciendo que el margen sea más grande en el lado izquierdo de la gráfica ( side = 2 ):

## margin for side 2 is 7 lines in size op <- par(mar = c(5,7,4,2) + 0.1) ## default is c(5,4,4,2) + 0.1

Ahora trama:

## draw the plot but without annotation boxplot(OM ~ Depth, data = dat, axes = FALSE, ann = FALSE) ## add axes axis(1, at = 1:4, labels = c(" ", "Shallow", "Deep", " "), cex.axis = 1.5) axis(2, cex.axis = 2) ## now draw the y-axis annotation on a different line out from the plot ## using the extra margin space: title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5, line = 4.5) ## draw the box to finish off box()

Luego reinicie los márgenes de trazado:

par(op)

Esto da:

Así que hemos creado más espacio para el margen de la gráfica en el lado 2, y luego ylab los ejes y la anotación ( ylab ) por separado para controlar cómo está espaciada la gráfica.

Así que la clave de esto es esta línea:

op <- par(mar = c(5,7,4,2) + 0.1) ## default is c(5,4,4,2) + 0.1

Lo que hacemos es guardar los parámetros gráficos originales en el objeto op , y cambiar los tamaños de los márgenes (en números de líneas) para que sean 5, 7, 4, 2 + 0.1 líneas cada uno para los márgenes inferior, izquierdo, superior y derecho, respectivamente. La línea de arriba muestra los valores predeterminados, por lo que el código proporciona 2 líneas más en el margen izquierdo de lo que generalmente se proporciona de forma predeterminada.

Luego, cuando dibujamos la etiqueta del eje y utilizando el title() , especificamos en qué línea (de las 7) dibujamos la etiqueta en:

title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5, line = 4.5)

Aquí utilicé la línea 4.5 , pero 5 también funcionaría. Cuanto mayores sean los valores de ''line'' más lejos del trazado se dibujará la etiqueta.

El truco consiste en encontrar el valor para el margen izquierdo y el valor de ''line'' en la llamada del title() que permite que las marcas de verificación del eje y la etiqueta del eje no se superpongan. Prueba y error es probablemente la mejor solución para encontrar los valores que necesita con los gráficos base.