2016-02-16 41 views
0

我有數據爲(ur_memr_t $ up ...)製作了直方圖。然後,我使用fitdistr來擬合數據的指數分佈。我捕獲了擬合分佈的參數並生成了一些隨機變量。然後我爲exp隨機變量做了一個密度曲線。我想把密度放在直方圖上。下面的代碼引發此錯誤在數據直方圖上覆蓋指數密度

exp_data <- data.frame(x = rexp(3000, rate = 0.0144896182)) 

    ggplot(data = ur_memr_t, aes(ur_memr_t$updated_days_to_next_ur)) + 
    geom_histogram() + ggplot(exp_data, aes(x)) + geom_density() 

Error in p + o : non-numeric argument to binary operator 
In addition: Warning message: 
Incompatible methods ("+.gg", "Ops.data.frame") for "+" 

如果我運行

ggplot(data = ur_memr_t, aes(ur_memr_t$updated_days_to_next_ur)) + 
    geom_histogram() 

ggplot(exp_data, aes(x)) + geom_density() 

seperately,他們產生正確的地塊。爲什麼他們不能一起工作,並將其中一個放在另一個之上?

+0

如果你創建了一個[重複的例子(這將是有益http://stackoverflow.com/questions/5963269/how-to-make-a -great-R再現的-例子)。由於我們無法訪問'um_memr_t',因此我們無法運行您的代碼。你不能添加兩個'ggplot'對象。通常,您只需添加具有不同數據源和映射的新圖層。像'ggplot()+ geom_histogram(data = ur_memr_t,aes(updated_days_to_next_ur,..density ..))+ geom_density(data = exp_data,aes(x),color =「red」)''應該是相近的。請注意,計數和密度在不同的比例 – MrFlick

+0

也經常詢問這個問題。我建議尋找類似的答案:http://stackoverflow.com/questions/5688082/ggplot2-overlay-histogram-with-density-curve – MrFlick

回答

0

我認爲它應該工作,但你只能有一個ggplot聲明。嘗試是這樣的:

g = ggplot(data = ur_memr_t, aes(ur_memr_t$updated_days_to_next_ur)) 
g = g + geom_histogram(aes(ur_memr_t$updated_days_to_next_ur)) 
g = g + geom_density(data = exp_data, aes(x)) 

希望它可以幫助