web-dev-qa-db-fra.com

Légende commune pour plusieurs parcelles en R

J'utilise R et Latex ensemble pour dessiner des graphiques et j'essaie de créer une légende commune pour chacun d'eux.

J'ai six parcelles distinctes sur la même page. J'ai créé chaque tracé séparément dans R, puis je les ai affichés sur la même page en utilisant\includeegraphics dans Latex.

Chaque graphique a les mêmes informations de légende, donc plutôt que d'avoir une légende dans chaque tracé, j'aimerais avoir une légende horizontale en bas de la page. Malheureusement, je ne sais pas comment créer une légende sans intrigue. Une fois que j'aurai une image séparée pour la légende, je saurai comment l'inclure au bas de la page en utilisant Latex.

Le code que j'essaie d'utiliser pour faire la légende est

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)

Mais, la police est trop petite et le côté de la boîte de légende est coupé.

18
user1288578

Un exemple simple de ce dont je parlais:

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

25
joran

Essaye ça,

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)
5
baptiste