Buộc nguồn gốc bắt đầu từ 0


139

Làm cách nào tôi có thể đặt gốc / chặn của trục y và trục x trong ggplot2?

Đường thẳng của trục x phải chính xác tại y=Z.

Với Z=0hoặc giá trị khác.

Câu trả lời:


199

xlimylimđừng cắt nó ở đây. Bạn cần sử dụng expand_limits, scale_x_continuousscale_y_continuous. Thử:

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for

nhập mô tả hình ảnh ở đây

p + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))

nhập mô tả hình ảnh ở đây

Bạn có thể cần điều chỉnh mọi thứ một chút để đảm bảo các điểm không bị cắt đứt (xem, ví dụ, điểm tại x = 5y = 5.


29
Tôi cũng cần chỉ định các giới hạn: scale_x_continuous(expand = c(0, 0), limits = c(0,5))bằng cách nào đó mà không có nó không hoạt động
JelenaČuklina

3
Tôi nghĩ rằng một phần nữa có thể hữu ích, đó là sử dụng một cái gì đó tương tự expand=expand_scale(mult=c(0,0.1))để bạn vẫn có được phần đệm ở đầu trên: stackoverflow.com/a/59056123/8400969
Michael

4

Chỉ cần thêm chúng vào ggplot của bạn:

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

Thí dụ

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for


p + scale_x_continuous(expand = c(0, 0), limits = c(0,NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

nhập mô tả hình ảnh ở đây

Cuối cùng, hãy lớn chăm sóc không vô tình loại trừ dữ liệu ra khỏi bảng xếp hạng của bạn. Ví dụ: một position = 'dodge'thanh / biểu đồ có thể rời khỏi biểu đồ hoàn toàn nếu giá trị của nó bằng 0 và bạn bắt đầu trục bằng 0, vì vậy bạn có thể không nhìn thấy nó và biết rằng nó ở đó. Tôi khuyên bạn nên vẽ đầy đủ dữ liệu trước, kiểm tra, sau đó sử dụng mẹo trên để cải thiện tính thẩm mỹ của cốt truyện.


cũng có thể xây dựng nó thành một chủ đề ggplot mới?
Bolle

@Bolle Tôi không chắc, nhưng cũng muốn tìm hiểu, bạn có thể hỏi như một câu hỏi và liên kết riêng ở đây
stevec

Liên kết tại đây để tham khảo trong tương lai
stevec
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.