2012-09-17 25 views
5

Tôi cố gắng chồng lên một hàm qua stat_function() trong ggplot nhưng không thể tìm ra lỗi của mình. Ví dụ này tạo ra một âm mưu cái nhìn tốt đẹp:Siêu mật độ log-bình thường trong ggplot và stat_function()

data <- data.frame(x=rt(10000, df=7)) 

ggplot(data=data, aes(x=x)) + geom_histogram(aes(y = ..density..)) + 
    stat_function(fun =dnorm, size=1, color='gray', args=list()) + 
    opts(title="Histogram of interest rate changes") + theme_bw() 

enter image description here

nhưng khi tôi cố gắng để chồng lên một mật độ đăng nhập bình thường này không hoạt động như mong đợi (hay tôi nên nói như mong đợi này không hoạt động ;):

data <- data.frame(x=rf(10000, df1=7, df2=120)) 

ggplot(data=data, aes(x=x)) + geom_histogram(aes(y = ..density..)) + 
stat_function(fun =dnorm, size=1, color='gray', args=list(log=TRUE)) + 
opts(title="Histogram of interest rate changes") + theme_bw() 

enter image description here

vì vậy đây là câu hỏi hy vọng đơn giản của tôi: những gì tôi làm sai ở đây? Tôi đoán đây là một vấn đề thực sự đơn giản, tôi không thấy câu trả lời - xin lỗi.

+0

Tôi không hiểu làm thế nào một desnsity có thể là tiêu cực. –

+0

Tôi nghĩ rằng một phần của vấn đề của bạn là 'log = TRUE' –

+0

@LucianoSelzer tất nhiên bạn đã đúng - và tôi nghĩ rằng nó sẽ làm việc thông qua đối số 'log = TRUE' nhưng Sven đã chứng minh có một cách dễ dàng hơn;) – Seb

Trả lời

7

Sử dụng dlnorm, hàm mật độ phân bố log-bình thường:

ggplot(data=data, aes(x=x)) + geom_histogram(aes(y = ..density..)) + 
    stat_function(fun = dlnorm, size=1, color='gray') + 
    opts(title="Histogram of interest rate changes") + theme_bw() 

enter image description here

+0

Chỉ cần chạy qua câu trả lời của bạn. Tôi sẽ đánh giá cao, nếu bạn có thể xem xét câu hỏi liên quan của tôi (trong trường hợp bạn chưa nhìn thấy nó): http://stackoverflow.com/q/25598485/2872891. Cảm ơn bạn! –

Các vấn đề liên quan