plots multiple mfrow for r graph plot title par

multiple - r plot title



Título principal común de un panel de figuras compilado con par(mfrow) (4)

Aquí hay otra forma de hacerlo, usando la función line2user de esta publicación .

par(mfrow = c(2, 2)) plot(runif(100)) plot(runif(100)) text(line2user(line=mean(par(''mar'')[c(2, 4)]), side=2), line2user(line=2, side=3), ''First title'', xpd=NA, cex=2, font=2) plot(runif(100)) plot(runif(100)) text(line2user(line=mean(par(''mar'')[c(2, 4)]), side=2), line2user(line=2, side=3), ''Second title'', xpd=NA, cex=2, font=2)

Aquí, el título está posicionado 2 líneas más arriba que el borde superior de la gráfica, como lo indica el line2user(2, 3) . Lo centramos al compensarlo con respecto a la segunda y cuarta gráfica, a la mitad del ancho combinado de los márgenes izquierdo y derecho, es mean(par(''mar'')[c(2, 4)]) , la mean(par(''mar'')[c(2, 4)]) .

line2user expresa un desplazamiento (número de líneas) desde un eje en las coordenadas del usuario, y se define como:

line2user <- function(line, side) { lh <- par(''cin'')[2] * par(''cex'') * par(''lheight'') x_off <- diff(grconvertX(0:1, ''inches'', ''user'')) y_off <- diff(grconvertY(0:1, ''inches'', ''user'')) switch(side, `1` = par(''usr'')[3] - line * y_off * lh, `2` = par(''usr'')[1] - line * x_off * lh, `3` = par(''usr'')[4] + line * y_off * lh, `4` = par(''usr'')[2] + line * x_off * lh, stop("side must be 1, 2, 3, or 4", call.=FALSE)) }

Tengo una compilación de 4 trazados dibujados con par(mfrow=c(2,2)) . Quisiera dibujar un título común para los 2 trazados anteriores y un título común para los 2 paneles a continuación que se centran entre los 2 trazados a la izquierda y a la derecha.

es posible?


Esto debería funcionar, pero tendrás que jugar con el argumento de line para hacerlo bien:

par(mfrow = c(2, 2)) plot(iris$Petal.Length, iris$Petal.Width) plot(iris$Sepal.Length, iris$Petal.Width) plot(iris$Sepal.Width, iris$Petal.Width) plot(iris$Sepal.Length, iris$Petal.Width) mtext("My ''Title'' in a strange place", side = 3, line = -21, outer = TRUE)

mtext significa "texto de margen". side = 3 dice colocarlo en el margen "superior". line = -21 dice para compensar la colocación por 21 líneas. outer = TRUE dice que está bien usar el área del margen exterior.

Para agregar otro "título" en la parte superior, puede agregarlo usando, por ejemplo, mtext("My ''Title'' in a strange place", side = 3, line = -2, outer = TRUE)


Lo mismo pero en negrita se puede hacer usando el title(...) con los mismos argumentos que arriba:

title("My ''Title'' in a strange place", side = 3, line = -21, outer = TRUE)


Puede usar el layout() la función layout() y establecer dos regiones de trazado que ocurran en ambas columnas (vea los números que se repiten 1 y 3 en la matrix() ). Luego usé plot.new() y text() para establecer títulos. Puedes jugar con márgenes y alturas para obtener una mejor representación.

x<-1:10 par(mar=c(2.5,2.5,1,1)) layout(matrix(c(1,2,3,4,1,5,3,6),ncol=2),heights=c(1,3,1,3)) plot.new() text(0.5,0.5,"First title",cex=2,font=2) plot(x) plot.new() text(0.5,0.5,"Second title",cex=2,font=2) hist(x) boxplot(x) barplot(x)