如何从 R 中的 fitdistrplus 包更改 denscomp 图中的线条粗细?

How do I change line thickness in denscomp plots from the fitdistrplus package in R?

我使用 Rfitdistrplus 包中的 denscomp 在我的数据直方图上绘制了三个密度。下面的代码运行完美,但我不知道如何使线条更粗。

denscomp(list(TryWeibull, TryGamma, TryLognormal), legendtext = plot.legend, 
     fitcol = c("indianred3","gray38", "darkblue"), fitlty = c("dashed", "longdash", "dotdash"),
     xlab = "Age", ylab  = "Proportion", main="")

fitcol 给出了正确的颜色,fitly 给出了正确的线条类型,但我无法计算出使线条变粗的命令。我有两个靠得很近的分布密度,但我未能使用 colour/line 类型差异清楚地识别它们。 .

我试图不强调 Weibull 并强调 gamma 和对数正态。比例是估计值,所以我试图适应一般形状,而不是精确值。

我在 denscomp 函数中看不到指定线宽的选项。我宁愿不使用 ggplot 选项,但如果需要可以切换到那个选项。我希望有一个我忽略的功能选项。

编辑添加:我在 GitHub 上将此作为功能请求提出,并且已在包中实现。

尽管此包的作者允许您指定多种线型 (fitlty) 和线颜色 (fitcol),但他们不允许您指定多种线宽。但由于 R 是开源的,您可以自由地以任何方式修改函数。

在 R 控制台键入以下内容:

fix(denscomp)

然后在fitcol之后的函数中添加一个新的参数,叫做fitlwd

..., fitcol, fitlwd, addlegend = TRUE, ...

然后在第30行之后添加如下内容:

if (missing(fitlwd)) 
    fitlwd <- 1

然后在第34行之后添加如下内容:

fitlwd <- rep(fitlwd, length.out = nft)

然后修改第136行如下:

col = fitcol[i], lwd=fitlwd[i], ...)

最后,修改第142行:

col = fitcol, lwd=fitlwd,

像以前一样保存并调用新函数,但现在指定 fitlwd 参数:

denscomp(..., fitlwd=c(1,3,3))

我有同样的问题并遵循了 Edward 的解决方案,这很棒并且我学到了很多东西,但事实证明你可以只使用 ggplot 来做到这一点。

denscomp(..., plotstyle = "ggplot") + geom_line(linetype = "dashed",size = 1))