В легенде отсутствует функция ppcomp в пакете fitdistrplus в R

У меня есть большие данные с более чем 20 миллионами значений. Благодаря конфиденциальности и воспроизводимости кодов, я использую mydata для их замены.

set.seed(1234)
mydata <- rlnorm(28000000,3.14,1.3)

Я хочу найти, какие известные дистрибутивы подходят mydata лучше всего, так что функция fitdist в упаковке fitdistrplus выбран.

library(fitdistrplus)
fit.lnorm <- fitdist(mydata,"lnorm")
fit.weibull <- fitdist(mydata, "weibull")
fit.gamma <- fitdist(mydata, "gamma", lower = c(0, 0))
fit.exp <- fitdist(mydata,"exp")

Затем я использую ppcomp функция рисования графика PP, чтобы помочь мне выбрать наиболее подходящее распределение.

library(RColorBrewer)
tiff("./pplot.tiff",res = 300,compression = "lzw",height = 6,width = 10,units = "in",pointsize = 12)
ppcomp(list(fit.lnorm,fit.weibull, fit.gamma,fit.exp), fitcol = brewer.pal(9,"Set1")[1:4],legendtext = c("lnorm","weibull", "gamma","exp"))
dev.off()

pplot Абсолютно логнормально подходит mydata лучше, но взгляните на legend графика отсутствует линейная аннотация разными цветами, только текстовая аннотация показывает, что мне делать?

Я пробовал несколько наборов данных с несколькими значениями, и это сработало. Таким образом, большие данные приводят к вопросу, что я должен сделать, чтобы сделать легенду идеальной?

1 ответ

Многие функциональные вопросы могут быть выполнены fix(function)Таким образом, мы могли бы знать, как работает функция.

fix(ppcomp)

И я нахожу некоторые коды о легенде,

if (addlegend) {
    if (missing(legendtext)) 
      legendtext <- paste("fit", 1:nft)
    if (!largedata) 
      legend(x = xlegend, y = ylegend, bty = "n", legend = legendtext, 
        pch = fitpch, col = fitcol, ...)
    else legend(x = xlegend, y = ylegend, bty = "n", legend = legendtext, 
      col = fitcol, ...)
  }

Затем я добавляю lty=1 к легенде, и это работает.

Другие вопросы по тегам