2012-02-10 28 views
19

Tôi có chuỗi thời gian dữ liệu trong đó các phép đo là tất cả các số nguyên trong khoảng từ 1e6 đến 1e8: số lần truy cập trang web mỗi tháng. Tôi muốn sử dụng ggplot2 để vẽ biểu đồ các điểm và đường thẳng, nhưng ánh xạ các phép đo đến thang đo log. Một cái gì đó như thế này:Làm cách nào để đặt phạm vi trục trong ggplot2 khi sử dụng thang đo log?

qplot(month, hits, data=hits.per.month, log="y") 

Khi tôi làm điều đó, ggplot dường như đặt tỷ lệ từ 1e6 đến 1e8. Tôi muốn nó mở rộng từ 0 đến 1e8. Cách tự nhiên để làm điều này dường như không có ảnh hưởng đến kết quả:

qplot(month, hits, data=hits.per.month, log="y", ylim=c(0, 100000000)) 

Tôi có thể lấy hình ảnh tôi muốn bằng cách chuyển hits trước khi nó đạt qplot, nhưng điều đó làm thay đổi nhãn trên trục:

qplot(month, log10(hits), data=hits.per.month, log="y", ylim=c(0, 8)) 

Tôi cũng đã thử các kết hợp khác nhau với scale_y_log10, nhưng không có may mắn.

Vì vậy, làm cách nào để đặt phạm vi trục Y khi sử dụng thang đo log trong ggplot2?

Trả lời

25

Phần lớn ggplot2 đơn giản là rõ ràng hơn nếu người dùng không sử dụng qplot. Bằng cách đó bạn không được nhồi nhét mọi thứ vào một cuộc gọi chức năng duy nhất:

df <- data.frame(x = 1:10, 
       y = seq(1e6,1e8,length.out = 10)) 

ggplot(data = df,aes(x = x, y =y)) + 
    geom_point() + 
    scale_y_log10(limits = c(1,1e8)) 

enter image description here

Tôi sẽ giả sử bạn không thực sự có nghĩa ay trục tối thiểu là 0, vì trên thang điểm từ nhật ký mà , um, có vấn đề.

+5

+1 Đồng ý, không bao giờ nhận được hang của qplot() –

+0

Cảm ơn bạn. Nó ổn với tôi. Mặc dù tôi muốn tôi hiểu _why_ đã làm việc và phiên bản 'qplot' thì không. – jml

+7

Làm thế nào bạn nhận được các giá trị trên trục y được biểu diễn bằng các chữ cái như thế? –

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