我使用包fitdist中的函数fitdistrplus来获得适合我的数据的最佳分布并绘制ppcomp图,我使用?fitdistrplus的示例代码替换我的数据和代码。

data(groundbeef)
serving <- groundbeef$serving
fitW <- fitdist(serving, "weibull")
fitg <- fitdist(serving, "gamma")
fitln <- fitdist(serving, "lnorm")
ppcomp(list(fitW, fitg, fitln), legendtext=c("Weibull", "gamma", "lognormal"))


r - 如何在R中的fitdistrplus包中使轴从零开始-LMLPHP

到目前为止,一切都很好!但是请看图片的左下角,有一些空间,或者轴不是从零开始!

所以我用谷歌搜索并找到两种方法:
基本图中使用了一种方法xaxsyaxs

set.seed(1234)
x <- runif(100, min=0, max=100)
y <- runif(100, min=0, max=100)
plot(x,y,xaxs="i",yaxs="i",xlim=c(0,100),ylim=c(0,100))


r - 如何在R中的fitdistrplus包中使轴从零开始-LMLPHP

ggplot2中的另一种方法是expand=c(0,0)

df <- data.frame(x=x,y=y)
ggplot(df,aes(x,y)) + geom_point() + scale_x_continuous(expand = c(0,0)) + scale_y_continuous(expand = c(0,0))


r - 如何在R中的fitdistrplus包中使轴从零开始-LMLPHP

因此,我尝试使用这两种方法绘制ppcomp图,

ppcomp(list(fitW, fitg, fitln), legendtext=c("Weibull", "gamma", "lognormal"),xaxs="i",yaxs="i")


但是发生错误:

Error in legend(x = xlegend, y = ylegend, bty = "n", legend = legendtext,  :
  unused arguments (xaxs = "i", yaxs = "i")


那么,我该怎么做才能完成目标而不会出错,或者正确的代码是什么?

最佳答案

问题似乎是...ppcomp都赋予了plot中的legend参数(接受额外的参数),并且legend不知道如何处理xaxs

选项有:

1)用ppcomp运行xaxs,将绘制图形,然后分别添加legend

2)使用fix(ppcomp)...命令中删除legend

3)重新编码ppcomp以使用ggplot并根据需要设置选项。

关于r - 如何在R中的fitdistrplus包中使轴从零开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38177612/

10-09 20:40