2017-08-31 2 views
1

J'ai des problèmes avec l'affichage de la légende sur chaque graphique. Overlapping Histograms on one pageR - Problèmes avec les légendes et les histogrammes

Je voudrais avoir une légende sur le coin montant pour chacun. Cependant, avec la ligne de commande que j'utilise, je reçois cette version agrandie.

par(mfrow = c(2,2)) 

#plot histograms on one same graph 
hist(DSA, prob=TRUE, main="Controls", xlab="Sizes (um)", ylab="Frequency", col="yellowgreen",xlim= c(5,25), ylim=c(0,0.5), breaks=10) 
hist(DSB, prob=TRUE, col=rgb(0,0,1,0.5),add=T) 
hist(DSC, prob=TRUE, col=rgb(0.8,0,1,0.5),add=T) 
box() 

plot_colors <- c("yellowgreen","blue", "pink") 
legend(x = "topright",inset = 0, 
     legend = c("1", "2", "3"), 
     col=plot_colors, lwd=6, cex=0.5,horiz = FALSE) 

Des idées? Merci! J'ai changé le lwd et le cex, à beaucoup de combinaisons, mais je n'arrive toujours pas à le faire fonctionner.

+0

merci beaucoup! Je suis assez nouveau à ce – Orbis

+1

S'il vous plaît fournir vos données 'DSA',' DSB' et 'DSC' afin que nous puissions reproduire vos parcelles. Vous pouvez le faire en copiant et en collant la sortie de 'dput (DSA)', etc. – useR

+0

btw, ce code ne produit qu'un seul tracé sur les quatre comme indiqué dans votre image. – useR

Répondre

1

OP ne fourni le code pour l'une des quatre parcelles comme le montre l'image, donc je vais juste travailler avec ça, mais on peut simplement appliquer facilement la solution suivante à toutes les légendes:

par(mfrow = c(2,2)) 

# Some madeup data 
DSA = rnorm(10000, 15, 2) 
DSB = rnorm(10000, 17, 3) 
DSC = rnorm(10000, 13, 1) 


#plot histograms on one same graph 
hist(DSA, prob=TRUE, main="Controls", xlab="Sizes (um)", ylab="Frequency", col="yellowgreen",xlim= c(5,25), ylim=c(0,0.5), breaks=10) 
hist(DSB, prob=TRUE, col=rgb(0,0,1,0.5),add=T) 
hist(DSC, prob=TRUE, col=rgb(0.8,0,1,0.5),add=T) 
box() 

plot_colors <- c("yellowgreen","blue", "pink") 
legend(x = "topright",inset = 0, 
     legend = c("1", "2", "3"), 
     col=plot_colors, lwd=6, cex=0.7,horiz = FALSE, y.intersp=0.6, bty="n") 

enter image description here

Fondamentalement, j'ai réduit le y.intersp à 0,6 de sorte que l'espacement y entre les touches de légende est réduit. J'ai alors mis cex=0.7 (qui est plus grand que cex=0.5) pour le rendre plus lisible après le rétrécissement d'espacement. L'argument optionnel bty = "n" supprime la frontière de la légende, qui est plus présentable, à mon avis.

+0

Salut, j'ai essayé vos suggestions, j'ai dû réduire y.intersp à 0.1 et cex = 0.4, et cela fonctionne. Merci pour votre aide! – Orbis

+0

@Orbis Si vous pensez que cela répond à votre question, n'hésitez pas à l'accepter pour que les autres puissent le voir! – useR