/ / So skalieren Sie das Legendenfeld oder vergrößern die Schriftgröße im Legendenfeld in R - r, Rand, Schriftgröße

So skalieren Sie die Legendenbox oder vergrößern Sie die Schriftgröße in der Legendenbox in R - r, Rand, Schriftgröße

Ich benutze den folgenden Code, um einige Gammaverteilungen zu zeichnen.

par(mfrow=c(2, 2))
a = 0.5; b = 2
curve(dgamma(x, a, b), from=0.01, to=0.2, ylab="p(x)", cex.lab=1.5)
b = 1
curve(dgamma(x, a, b), from=0.01, to=0.2, col=2, add=T)
b = 0.5
curve(dgamma(x, a, b), from=0.01, to=0.2, col=4, add=T)
legend("topright", bty="n", lty=1, lwd=1.5, col=c(1,2,4), cex=0.5,ft.cex=1,
c("a = 0.5, b = 2","a = 0.5, b = 1","a = 0.5, b = 0.5"))

a = 1; b = 2
curve(dgamma(x, a, b), from=0.01, to=4, ylab="p(x)", cex.lab=1.5)
b = 1
curve(dgamma(x, a, b), from=0.01, to=4, col=2, add=T)
b = 0.5
curve(dgamma(x, a, b), from=0.01, to=4, col=4, add=T)
legend("topright", bty="n", lty=1, lwd=1.5, col=c(1,2,4), cex=0.5,
c("a = 1, b = 2","a = 1, b = 1","a = 1, b = 0.5"))

a = 2; b = 2
curve(dgamma(x, a, b), from=0.01, to=8, ylab="p(x)", cex.lab=1.5)
b = 1
curve(dgamma(x, a, b), from=0.01, to=8, col=2, add=T)
b = 0.5
curve(dgamma(x, a, b), from=0.01, to=8, col=4, add=T)
legend("topright", bty="n", lty=1, lwd=1.5, col=c(1,2,4),
c("a = 2, b = 2","a = 2, b = 1","a = 2, b = 0.5"))

a = 20; b = 2
curve(dgamma(x, a, b), from=0.01, to=70, ylab="p(x)", cex.lab=1.5)
b = 1
curve(dgamma(x, a, b), from=0.01, to=70, col=2, add=T)
b = 0.5
curve(dgamma(x, a, b), from=0.01, to=70, col=4, add=T)
legend("topright", bty="n", lty=1, lwd=1.5, col=c(1,2,4),
c("a = 20, b = 5","a = 20, b = 1","a = 20, b = 0.2"))
par(mfrow=c(1, 1))

Beispiele für Gamma-Verteilungen

Wie Sie sehen, ist die Größe des Legendenfelds zu groß. Ich habe cex = 0.5 verwendet, um die Legendenfelder in den ersten beiden Unterdiagrammen zu verkleinern. Das Schrumpfen der Kästchen erschwert jedoch das Lesen der Texte. Daher,

F1: Wie kann ich den Text im Legendenfeld vergrößern?

Ein weiteres Problem besteht darin, dass die Schriftgröße der Beschriftungen im oberen linken Diagramm den Rand überschreitet. Daher,

F2: Wie kann ich den linken Rand vergrößern, damit der Kopf nicht von meinem y-Etikett abfällt?

Schließlich ist das Seitenverhältnis komisch. Daher,

F3: Wie kann ich die Breite und Höhe des gesamten Diagramms manuell einstellen? oder Gibt es eine Möglichkeit, den Leerraum zwischen den beiden Untergraphenreihen zu verkleinern?

Vielen Dank!

Antworten:

1 für die Antwort № 1

Für Q2 und Q3 können Sie das Argument mar in der Funktion par verwenden, zum Beispiel:

   par(mar=c(2,6,2,2), mfrow=c(2, 2))

Dies legt den unteren, linken, oberen und rechten Rand fest. Vergrößern Sie einfach den linken Rand (um Ihr Y-Label anzuzeigen) und verkleinern Sie den oberen und unteren Rand (um weniger Leerraum zu erhalten).

Dies beantwortet Ihr Q1 nicht. Aber weil Ihre Zahlen größer sind, weil Sie weniger Leerzeichen haben, passt Ihre Legende eher.


1 für die Antwort № 2

Wenn Sie Schriftgröße erhöhen, denke ich, dass der Textpasst nicht mehr in die legend box. Sie müssen also cex anpassen, bis Sie Ihren Text lesen können. Auf meinem Bildschirm funktioniert das folgende Skript. Wenn Sie nicht genügend Platz auf dem Grundstück haben, können Sie die Legende auch außerhalb des Grundstücks platzieren.

par(mar=c(2.5,5,1,1), mfrow=c(2, 2))
a = 0.5; b = 2
curve(dgamma(x, a, b), from=0.01, to=0.2, ylab="p(x)", cex.lab=1.5)
b = 1
curve(dgamma(x, a, b), from=0.01, to=0.2, col=2, add=T)
b = 0.5
curve(dgamma(x, a, b), from=0.01, to=0.2, col=4, add=T)
legend("topright", bty="n", lty=1, lwd=1.5, col=c(1,2,4), cex=0.7, pt.cex(2),
c("a = 0.5, b = 2","a = 0.5, b = 1","a = 0.5, b = 0.5"))

a = 1; b = 2
curve(dgamma(x, a, b), from=0.01, to=4, ylab="p(x)", cex.lab=1.5)
b = 1
curve(dgamma(x, a, b), from=0.01, to=4, col=2, add=T)
b = 0.5
curve(dgamma(x, a, b), from=0.01, to=4, col=4, add=T)
legend("topright", bty="n", lty=1, lwd=1.5, col=c(1,2,4), cex=0.5,
c("a = 1, b = 2","a = 1, b = 1","a = 1, b = 0.5"))

a = 2; b = 2
curve(dgamma(x, a, b), from=0.01, to=8, ylab="p(x)", cex.lab=1.5)
b = 1
curve(dgamma(x, a, b), from=0.01, to=8, col=2, add=T)
b = 0.5
curve(dgamma(x, a, b), from=0.01, to=8, col=4, add=T)
legend("topright", bty="n", lty=1, lwd=1.5, col=c(1,2,4),
c("a = 2, b = 2","a = 2, b = 1","a = 2, b = 0.5"))

a = 20; b = 2
curve(dgamma(x, a, b), from=0.01, to=70, ylab="p(x)", cex.lab=1.5)
b = 1
curve(dgamma(x, a, b), from=0.01, to=70, col=2, add=T)
b = 0.5
curve(dgamma(x, a, b), from=0.01, to=70, col=4, add=T)
legend("topright", bty="n", lty=1, lwd=1.5, col=c(1,2,4),
c("a = 20, b = 5","a = 20, b = 1","a = 20, b = 0.2"))
par(mfrow=c(1, 1))

Bildbeschreibung hier eingeben