【问题标题】:Legend box width not correct when using par使用 par 时图例框宽度不正确
【发布时间】:2013-03-15 15:52:46
【问题描述】:

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

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

【问题讨论】:

  • 没有avsloss 对象,您的示例无法重现。
  • @juba 数据已添加
  • 数据不再可用(与您使用 uploadeasy.net 获取 alvloss 数据集的所有其他帖子一样)。将数据(或其随机子样本)放入帖子本身会很有帮助。

标签: r plot width legend


【解决方案1】:

您图例右侧的空白区域告诉我您手动加宽了绘图窗口。在手动调整大小时,图例无法很好地缩放。

解决方案是在绘图之前打开您需要的确切大小的绘图。在 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    相关资源
    最近更新 更多