R:合并2个具有不同x长度的图

时间:2019-02-11 07:49:49

标签: r ggplot2

我正在尝试将直方图和伽玛分布计算的最大似然估计结合起来,而直方图代表x的观测值,一条线代表伽玛分布计算的最大似然估计。示例图如下所示:

enter image description here

但是,直方图在x轴上的长度为13,而gamma分布在x轴上的长度为512,但人们一直抱怨`

  

错误:美学必须为长度1或与数据相同   (13):x,y

den <- density(x) # x's length is 13, however den's length is 512

dat <- data.frame(x = den$x, y = den$y)
dataframe = data.frame(days = days, x = x)

ggplot(data = dat) +
  geom_line(aes(x=dat$x, y=dgamma(dat$x,shape, rate)), color="red", size = 1) + 
  theme_classic()

bplot = ggplot(data = dataframe,aes(x = dataframe$days, y = (dataframe$x)/sum(dataframe$x)));
bplot + 
  geom_bar(stat="identity", width=0.5)+
  geom_line(aes(x=dat$x, y=dgamma(dat$x,shape, rate)), color="blue", size = 1) 

1 个答案:

答案 0 :(得分:2)

您必须在data调用中将dat参数设置为geom_line,这样才能将美观性映射到新的dat而不是dataframe

bplot + 
  geom_bar(stat="identity", width=0.5)+
  geom_line(data = dat, aes(x=dat$x, y=dgamma(dat$x,shape, rate)), color="blue", size = 1)