【发布时间】:2015-05-01 10:54:39
【问题描述】:
我正在使用以下代码来绘制一些伽马分布。
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))
如您所见,图例框的尺寸太大。我使用 cex=0.5 来缩小前两个子图中的图例框。但是,缩小框使阅读文本变得困难。因此,
Q1:如何放大图例框中的文字?
另一个问题是,当我增加左上图中标签的字体大小时,它会超出边距。因此,
Q2:如何增加左边距,以免头部从我的 y 标签上切掉?
最后,长宽比很奇怪。因此,
Q3:如何手动设置整个图形的宽高?或者有没有办法缩小两行子图之间的空白?
谢谢!
【问题讨论】: