2011-11-23 27 views
8

Xin lỗi rằng ví dụ này không tuyệt vời nhưng nó làm nổi bật điểm.geom_smooth() - và mở rộng trục y, làm mất dữ liệu từ làm mịn

mtcars$tran <- factor(mtcars$am, labels=c("Man","Aut")) 
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_smooth(aes(colour=tran)) 
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_point(aes(colour=tran)) 
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_point(aes(colour=tran)) + geom_smooth(aes(colour=tran)) 
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_smooth(aes(colour=tran)) + scale_y_continuous(limits=c(12,60)) 

Điều tôi muốn làm là vẽ đường cong mượt mà nhưng 'phóng to' bằng cách giới hạn tỷ lệ của trục y. Tuy nhiên có vẻ như ggplot loại trừ bất kỳ dữ liệu nào ngoài giới hạn thang đo khi làm việc ra những đường cong được làm mịn. Vâng, điều này có vẻ hợp lý, nhưng làm thế nào tôi có thể thấy những gì tôi muốn thấy? Trong dữ liệu thực của tôi, các giá trị (thô) y nằm trong khoảng từ 5 đến 14, nhưng các đường cong được làm mịn nằm hoàn toàn từ 7 đến 9. Vì vậy, có rất nhiều không gian trống ở trên cùng. Khi tôi đặt nó thành c (7,9) nó không còn sử dụng các điểm ngoài phạm vi đó để tính toán đường cong trơn tru, và do đó tôi nhận được một đường cong khác.

Tôi không thể cung cấp dữ liệu nhưng bạn có thể thấy điều này trong ví dụ này. Xem như thế nào trong cốt truyện cuối cùng, hai điểm được thả ra và nửa cuối của đường cong 'Man' không giống như trong đồ thị ban đầu.

Câu hỏi

Nếu scale_y_continuous giới hạn các giá trị dữ liệu được sử dụng để xây dựng các đường cong mịn (logic), làm thế nào bạn có thể vẽ đường cong sử dụng tất cả các dữ liệu và sau đó 'phóng to' vào nó (wrt trục y).

Hãy cho tôi biết nếu điều đó không rõ ràng.

Cảm ơn

+0

Các zoom mặc định của 'geom_smooth' sẽ thay đổi, từ những gì tôi hiểu, trong phiên bản tiếp theo (mà phải được ra vào dịp Giáng sinh/New Năm). Xem ở đây, ví dụ: http: //stackoverflow.com/questions/7857020/ggplot2-zooming-in-on-geom-smooth-automatically-using-coord-cartesian –

Trả lời

13

Sử dụng coord_cartesian thay vì scale_y_continuous

ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + 
geom_smooth(aes(colour=tran)) + 
coord_cartesian(ylim = c(12,60)) 
+0

T rang rực rỡ! Luôn luôn là một cách, chỉ cần biết nơi để tìm. – nzcoops

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