Как изменить толщину линии на графиках denscomp из пакета fitdistrplus в R? - PullRequest
0 голосов
/ 20 июня 2020

Я увеличиваю график трех плотностей на моей гистограмме данных, используя denscomp в пакете fitdistrplus в R. Приведенный ниже код работает отлично, но я не знаю, как сделать линии толще.

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 дает мне правильные типы линий, но я не могу придумать команду сделать линии толще. У меня есть две близкие друг к другу плотности распределения, и мне не удалось однозначно идентифицировать их, используя различия в цвете / типе линий. Текущий график .

Я пытаюсь уменьшить значение Вейбулла и подчеркнуть гамму и логнормальность. Пропорции являются приблизительными, поэтому я стараюсь соответствовать общей форме, а не точным значениям.

Я не вижу опции в функции denscomp для указания ширины линий. Я бы предпочел не использовать параметр ggplot, но при необходимости могу перейти на него. Я надеялся, что есть опция функции, которую я упускаю.

Отредактировано для добавления: я поднял это как запрос функции на GitHub, и он был реализован в пакете.

1 Ответ

1 голос
/ 20 июня 2020

Хотя автор этого пакета позволяет вам указывать несколько типов линий (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))

enter image description here

...