2012-04-30 13 views
14

Estoy usando R y Latex para dibujar algunas tramas y estoy tratando de hacer una leyenda común para todas ellas.Leyenda común para varias parcelas en R

Tengo seis parcelas separadas en la misma página. Hice cada diagrama por separado en R y luego los mostré en la misma página usando \ includegraphics en Latex.

Cada gráfico tiene la misma información de leyenda, por lo que, en lugar de tener una leyenda en cada trama, me gustaría tener una leyenda horizontal en la pantalla en la parte inferior de la página. Desafortunadamente, no puedo entender cómo hacer una leyenda sin una trama. Una vez que tenga una imagen separada para la leyenda, sabré cómo incluirla en la parte inferior de la página usando Latex.

El código que estoy tratando de utilizar para hacer la leyenda es

plot(1, type = "n", axes=FALSE, xlab="", ylab="") 
plot_colors <- c("blue","black", "green", "orange", "pink") 

legend(.6,1.3,legend = c("Fabricated Metal", "Iron and Steel", "Paper", 
"Beverages", "Tobacco"), 
     col=plot_colors, lwd=5, cex=.5, horiz = TRUE) 

embargo, la fuente es demasiado pequeño y el lado del cuadro de la leyenda se corta.

+0

Si todas las parcelas utilizan las funciones de base de R, es posible tener un tiempo más fácil poniéndolos a todos en una parcela en R usando 'layout'. – joran

Respuesta

5

Prueba de esto,

plot_colors <- c("blue","black", "green", "orange", "pink") 
text <- c("Fabricated Metal", "Iron and Steel", "Paper", 
"Beverages", "Tobacco") 
plot.new() 
par(xpd=TRUE) 
legend("center",legend = text, text.width = max(sapply(text, strwidth)), 
     col=plot_colors, lwd=5, cex=1, horiz = TRUE) 
par(xpd=FALSE) 
+0

El código anterior crea una leyenda que es demasiado grande: solo puede ver el centro de la misma y los lados se cortan. Incluso cuando exporté el archivo y lo volví a abrir, no tenía la leyenda completa. – user1288578

+0

que dependería del tamaño de tu fuente y del ancho del dispositivo. Es posible que desee echarle un vistazo a las leyendas que 'reticulado' puede producir, pueden ser un poco más inteligentes al espaciar las diferentes claves. (necesitaría usar 'gridBase' para agregar la leyenda en los gráficos base). – baptiste

22

Un simple ejemplo de lo que estaba hablando:

m <- matrix(c(1,2,3,4,5,6,7,7,7),nrow = 3,ncol = 3,byrow = TRUE) 

layout(mat = m,heights = c(0.4,0.4,0.2)) 

for (i in 1:6){ 
    par(mar = c(2,2,1,1)) 
    plot(runif(5),runif(5),xlab = "",ylab = "") 
} 


plot(1, type = "n", axes=FALSE, xlab="", ylab="") 
plot_colors <- c("blue","black", "green", "orange", "pink") 
legend(x = "top",inset = 0, 
     legend = c("Fabricated Metal", "Iron and Steel", "Paper","Beverages", "Tobacco"), 
     col=plot_colors, lwd=5, cex=.5, horiz = TRUE) 

enter image description here

+2

es posible que desee agregar 'par (mar = c (0,0,0,0))' o restablecer los márgenes antes de agregar la leyenda – MichaelChirico

Cuestiones relacionadas