2014-09-05 28 views
55

Nếu bạn chỉ định giới hạn trục trong ggplot, các điểm bên ngoài sẽ bị xóa. Điều này là tốt cho các điểm, nhưng bạn có thể muốn vẽ các đường thẳng giao nhau với phạm vi được chỉ định, nhưng các phương pháp range hoặc xlim/ylim của ggplot sẽ loại bỏ các đường này. Có cách nào khác để xác định phạm vi trục lô mà không xóa dữ liệu ngoài?Giới hạn trục ggplot2 mà không xóa dữ liệu (giới hạn bên ngoài): zoom

ví dụ:

require(ggplot2) 
d = data.frame(x=c(1,4,7,2,9,7), y=c(2,5,4,10,5,3), grp=c('a','a','b','b','c','c')) 
ggplot(d, aes(x, y, group=grp)) + geom_line() 
ggplot(d, aes(x, y, group=grp)) + geom_line() + scale_y_continuous(limits=c(0,7)) 
ggplot(d, aes(x, y, group=grp)) + geom_line() + ylim(0,7) 

Trả lời

90

Hadley giải thích điều này trên trang 99; 133 của mình ggplot2 book (1st edition), hoặc pp 160 -. 161 nếu bạn có second edition

Vấn đề là như bạn nói limits bên trong quy mô hoặc thiết ylim nguyên nhân dữ liệu được vứt bỏ, vì họ đang kìm hãm dữ liệu. Để thu phóng đúng (giữ tất cả dữ liệu), bạn cần đặt các giới hạn bên trong hệ tọa độ Descartes. Để biết thêm see: http://docs.ggplot2.org/current/coord_cartesian.html

ggplot(d, aes(x, y, group=grp)) + geom_line() + 
    coord_cartesian(ylim=c(0, 7)) 

enter image description here

+1

gì nếu coord_cartesian không phải là một lựa chọn vì tôi sử dụng 'geom_boxplot'? – Everettss

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