2013-03-15 4 views
7

ich das Problem haben, dass meine Legende zu groß ist, mein Code:Legend Box Breite nicht korrekt, wenn Par mit

par(mfrow=c(1,2)) 
hist(alvsloss,breaks = 100, freq=F,main="Histogramm, 
density curve (gaussian kernel) \n and fitted normal distribution of Allianz simple losses ",xlim=c(-0.15,0.15),xlab="loss",ylab="density",cex.axis=1.2,cex.lab=1.2) 
lines(density(alvsloss), col="black", lwd=2) 
curve(dnorm(x, mean = mean(alvsloss), sd = sd(alvsloss)), add=TRUE, col="black",lwd=2,lty="dotted") 

legend(-0.155, 30, c("(Gaussian) Kernel density","fitted normal distribution"),lwd=2, cex=0.8, 
    col=c("black","black"), lty=1:2) 


qqnorm(alvsloss,main="normal QQ Plot",cex.axis=1.2,cex.lab=1.2) 
qqline(alvsloss) 

Dies ergibt sich folgendes Bild:

Graphs

Das Problem ist, dass die Legende auf der linken Seite zu groß ist, wie kann ich die Breite der Box kontrollieren? Die Box ist viel zu groß. http://uploadeasy.net/upload/ocafq.rar

+0

Ohne das 'avsloss' Objekt, Ihr Beispiel nicht reproduzierbar ist. – juba

+0

@juba Daten wurden hinzugefügt –

+0

die Daten sind nicht mehr verfügbar (wie bei all Ihren anderen Posts, wo Sie uploadeasy.net für den Alvloss-Datensatz verwenden). Es wäre wirklich hilfreich, die Daten (oder eine zufällige Teilstichprobe davon) in den Post selbst zu stellen. –

Antwort

8

Der weiße Raum auf der rechten Seite von Ihnen Legende sagt mir, dass Sie manuell Plotfenster erweitert:

Daten finden Sie hier. Legenden skalieren nicht gut, wenn es um manuelle Größenanpassung geht.

Die Lösung öffnet ein Diagramm der genauen Größe, die Sie vor dem Plotten benötigen. In Windows geschieht dies mit windows(width=10, height=8). Einheiten sind in Zoll. Die umgebende Box sollte jetzt enger mit dem Text sein.

Wenn dies immer noch nicht zufriedenstellend ist, sollten Sie versuchen:

  1. Verringerung der Schriftgröße der Legende cex=0.7
  2. den Kasten um die Legende Entfernen bty = "n" und mit \n zu teilen Sie Ihre Legende auf mehreren Linien
  3. Sie können Ihre Legende noch mehr auf der linken Seite "topleft" statt Koordinaten
setzen

Hier ist, wie ich es tun würde:

legend("topleft", 
legend=c("(Gaussian)\nKernel\ndensity","Fitted\nnormal\ndistribution\n"), 
bty = "n",lwd=2, cex=0.7, col=c("black","black"), lty=1:2) 

enter image description here

Verwandte Themen