2012-09-17 44 views
5

Tôi đang cố tạo một mật độ đơn giản trong R trong ggplot2. Đây là mã của tôi hoạt động rất tốt.R ggplot2 - Cốt truyện đơn giản - không thể chỉ định giới hạn trục log

d <- ggplot(result, aes(x=result$baseMeanA)) 
d + geom_density(colour="darkgreen", size=2, fill="darkgreen") + 
scale_x_log10() + scale_y_continuous(limits = c(0, 0.45)) 

Vấn đề là tôi không thể điều chỉnh trục x theo ý muốn thành số âm.

scale_x_log10(limits= c(1, 10000)) 

hoạt động tuyệt vời, nhưng

scale_x_log10(limits= c(-1, 10000)) 

không làm việc ở tất cả! Nó cho tôi lỗi này:

Error in if (zero_range(range)) { : missing value where TRUE/FALSE needed

Xin vui lòng trợ giúp!

+1

Chỉ cần đoán, nhưng có lẽ bạn muốn giới hạn trên thang điểm ban đầu đi từ 0,1 đến 10000 (tức là log10 (x) đi từ -1 đến 5)? Có lẽ bạn không muốn log10 (x) đi từ -1 đến 10000, bởi vì giới hạn trên sẽ là 10^10000 (một * rất * giá trị lớn, vì có khoảng 10^80 nguyên tử trong vũ trụ quan sát được http : //en.wikipedia.org/wiki/Observable_universe ...) Nếu tôi đúng, thì bạn muốn 'scale_x_log10 (limits = c (0.1,1e5))' –

+0

Vâng tôi nghĩ bây giờ tôi đã hiểu. Tôi không thể sử dụng số âm trong thang tỷ lệ .. Cảm ơn bạn. Tôi thấy bây giờ những gì tôi cần làm, tôi cần phải thêm một pseudonumber như 1 hoặc 0,1 kết quả, để nó trực quan sẽ xem xét chính xác, nếu không tôi sẽ mất tất cả các số rất nhỏ bằng cách nào đó. – user1678000

Trả lời

2

Điều bạn đang cố gắng làm không có ý nghĩa gì? Nhật ký số âm không phải là thứ chúng tôi có thể đại diện trong R

R> log(-1) 
[1] NaN 
Warning message: 
In log(-1) : NaNs produced 

vì vậy, nên vẽ trục ở đâu?

+0

Vâng, bạn có lẽ đúng. Tôi không biết điều đó. Tôi nghĩ rằng bây giờ tôi biết rằng để giải quyết vấn đề của tôi, tôi cần phải thêm một bút danh vào kết quả của tôi để tôi trực quan có thể nhìn vào nó. – user1678000

3

Nếu phạm vi các giới hạn nên phần nào dưới đây không, bạn có thể log10-transform biến của bạn và xác định các giới hạn cho một quy mô liên tục:

ggplot(result, aes(x=log10(baseMeanA))) + 
    geom_density(colour="darkgreen", size=2, fill="darkgreen") + 
    scale_x_continuous(limits = c(-1, 10000) + 
    scale_y_continuous(limits = c(0, 0.45)) + 
1

e^y không thể là tiêu cực. Hằng số lũy thừa e là dương, và y chỉ là số mũ. và theo định nghĩa toán học:

log (x) = y < ==> x = e^y

Đây chính là lý do tại sao R không thể tính toán log (x) nếu x là số âm. Nó chỉ đi ngược lại với định nghĩa toán học.

Tôi hy vọng điều này sẽ giúp hiểu tại sao cốt truyện này gây ra rắc rối cho bạn.

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