chỉ đặt giới hạn dưới của giới hạn cho ggplot


81

Có thể chỉ đặt giới hạn dưới của giới hạn cho thang đo liên tục không? Tôi muốn thực hiện tất cả các lô của mình dựa trên 0 mà không cần chỉ định giới hạn trên.

ví dụ

+ scale_y_continuous(minlim=0)

Câu trả lời:


116

Bạn có thể dùng expand_limits

ggplot(mtcars, aes(wt, mpg)) + geom_point() + expand_limits(y=0)

Đây là một so sánh của hai:

  • không có expand_limits

  • với expand_limits

Kể từ phiên bản 1.0.0 của ggplot2, bạn chỉ có thể chỉ định một giới hạn và đặt giới hạn kia như bình thường được xác định bằng cách đặt giới hạn thứ hai đó thành NA. Cách tiếp cận này sẽ cho phép mở rộng và cắt bớt phạm vi trục.

ggplot(mtcars, aes(wt, mpg)) + geom_point() +
  scale_y_continuous(limits = c(0, NA))

xác định nó thông qua ylim(c(0, NA))cho một con số giống hệt nhau.


@PatrickT Ý của bạn là nhận xét cho stackoverflow.com/q/27028825/892313 ?
Brian Diggs

Chính xác những gì tôi đang tìm kiếm. Cảm ơn bạn
Veera

12

Làm thế nào về việc sử dụng aes(ymin=0), như trong:

ggplot(mtcars, aes(wt, mpg)) + geom_point() + aes(ymin=0)

7
Điều này ghi đè ymin cho geom_errorbar, v.v.; expand_limits () có vẻ an toàn hơn.
Đánh dấu

Điều này không phải là phổ quát, vì geom_densitynó mang lại cho tôi Error: stat_bin() must not be used with a y aesthetichoặc khi được đặt bên trong geom_density, Warning: Ignoring unknown aesthetics: ymin(cái sau được mong đợi hoàn toàn)
PatrickT

7

Bạn cũng có thể thử mã sau đây sẽ cung cấp cho bạn trục y tối thiểu bằng 0 và cũng không có thêm khoảng cách giữa trục x và giá trị y nhỏ nhất.

scale_y_continuous(limits = c(0, NA), expand = c(0,0))

1
Có cách nào để làm điều này với coord_cartesian()thay thế không?
randy

-1

Tôi không nghĩ rằng bạn có thể làm điều này trực tiếp. Nhưng để làm việc chung, bạn có thể bắt chước cách mà ggplot2 xác định giới hạn trên:

scale_y_continuous(limits=c(0, max(mydata$y) * 1.1))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.