微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用多条密度曲线叠加直方图以获得广义帕累托分布

如何解决用多条密度曲线叠加直方图以获得广义帕累托分布

我想为广义帕累托分布绘制具有多条密度曲线的叠加直方图。如您所见,密度曲线不清晰可见。他们有什么办法可以说清楚吗?谢谢。

enter image description here

library(eva)
data(lowestoft)
data = as.vector(lowestoft)

d1 = dgpd(data,31.38105,10.15003)
d2 = dgpd(data,2.9431553,0.6778055)
d3 = dgpd(data,5.413916,17.162103)
d4 = dgpd(data,43.18705,13.98005)


N = length(data)
allden = c(d1,d2,d3,d4)
settings = c(rep('d1',N),rep('d2',rep('d3',rep('d4',N))


mydata = data.frame(x= rep(data,4),allden = allden,Methods = settings)

ggplot(mydata,aes(x)) +
  geom_histogram(aes(y = stat(density)),binwidth = 1,fill = "grey",color = "black")+
  geom_line(aes(x = x,y=allden,color = Methods)) 

解决方法

您可以做的一件事是像这样为 geom_line 添加一个单独的缩放 y 轴

library(eva)
data(lowestoft)
data = as.vector(lowestoft)

d1 = dgpd(data,31.38105,10.15003)
d2 = dgpd(data,2.9431553,0.6778055)
d3 = dgpd(data,5.413916,17.162103)
d4 = dgpd(data,43.18705,13.98005)


N = length(data)
allden = c(d1,d2,d3,d4)
settings = c(rep('d1',N),rep('d2',rep('d3',rep('d4',N))


mydata = data.frame(x= rep(data,4),allden = allden,Methods = settings)

coef <- 8
ggplot(mydata,aes(x,allden)) +
  geom_histogram(aes(y = stat(density)),binwidth = 1,fill = "grey",color = "black") +
  geom_line(aes(x = x,y=allden*coef,color = Methods)) +
  scale_y_continuous(name="Histogram Axis",sec.axis = sec_axis(trans~./coef,name='Line Axis'))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。