使用参数时,图例框宽度不正确

时间:2013-03-15 15:52:47

标签: r plot width legend

我有问题,我的传说太大,我的代码:

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)

这给出了以下图片:

Graphs

问题是,左边的图例太大了,我该如何控制盒子的宽度?盒子太大了。

数据可在此处找到:http://uploadeasy.net/upload/ocafq.rar

1 个答案:

答案 0 :(得分:8)

图例右侧的空白区域告诉我您手动加宽了绘图窗口。在涉及手动重新调整大小时,传说不能很好地扩展。

解决方案是在绘图之前打开您需要的确切尺寸的图。在Windows中,这是通过windows(width=10, height=8)完成的。单位是英寸。现在,周围的框应该与文本更紧密。

如果仍然不满意,你应该尝试:

  1. 缩小图例cex=0.7
  2. 的字体大小
  3. 移除图例bty = "n"周围的框并使用\n 将您的图例分成几行
  4. 您可以使用"topleft"将您的图例更多地放在左侧 而不是坐标
  5. 我将如何做到这一点:

    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