7

我有问题,我的图例太大了,我的代码:

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)

这给出了以下图片:

图表

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

数据可以在这里找到:http: //uploadeasy.net/upload/ocafq.rar

4

1 回答 1

8

你图例右边的空白告诉我你手动加宽了你的绘图窗口。在手动调整大小时,图例不能很好地缩放。

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

如果这仍然不令人满意,您应该尝试:

  1. 减小图例的字体大小cex=0.7
  2. 删除图例周围的框bty = "n"并使用\n将图例拆分为几行
  3. "topleft" 您可以使用而不是坐标将图例更多地放在左侧

这是我的做法:

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)

在此处输入图像描述

于 2013-03-16T11:49:29.997 回答