Hành vi bạn thấy là do cách ggplot2
xử lý dữ liệu nằm ngoài phạm vi trục của ô. Bạn có thể thay đổi hành vi này tùy thuộc vào việc bạn sử dụng scale_y_continuous
(hoặc tương đương, ylim
) hoặc coord_cartesian
để đặt phạm vi trục, như được giải thích bên dưới.
library(ggplot2)
# All points are visible in the plot
ggplot(mtcars, aes(mpg, hp)) +
geom_point()
Trong mã bên dưới, một điểm với hp = 335 nằm ngoài phạm vi y của ô. Ngoài ra, vì chúng tôi đã sử dụng scale_y_continuous
để đặt phạm vi trục y, điểm này không được bao gồm trong bất kỳ số liệu thống kê hoặc tóm tắt nào khác được tính bằng ggplot, chẳng hạn như đường hồi quy tuyến tính.
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
scale_y_continuous(limits=c(0,300)) + # Change this to limits=c(0,335) and the warning disappars
geom_smooth(method="lm")
Warning messages:
1: Removed 1 rows containing missing values (stat_smooth).
2: Removed 1 rows containing missing values (geom_point).
Trong đoạn mã dưới đây, điểm với hp = 335 vẫn nằm ngoài y tầm xa của cốt truyện, nhưng thời điểm này là vẫn có trong bất kỳ thống kê hoặc các biện pháp tóm tắt rằng ggplot tính toán, chẳng hạn như hồi quy tuyến tính hàng. Điều này là do chúng tôi đã sử dụng coord_cartesian
để đặt phạm vi trục y và chức năng này không loại trừ các điểm nằm ngoài phạm vi ô khi thực hiện các phép tính khác trên dữ liệu. Nếu bạn so sánh này và cốt truyện trước đó, bạn có thể thấy rằng đường hồi quy tuyến tính trong ô thứ hai có độ dốc hơi dốc hơn, bởi vì điểm có hp = 335 được bao gồm khi tính toán đường hồi quy, mặc dù nó không hiển thị trong cốt truyện.
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
coord_cartesian(ylim=c(0,300)) +
geom_smooth(method="lm")
Có giới hạn trên trục 'y' trên câu hỏi đó. Giá trị được giới hạn trong khoảng từ 0 đến 0,12 vì chức năng này: 'ylim (0,0.12)' – LyzandeR
Ví dụ có thể tái sản xuất sẽ giúp trả lời câu hỏi. @LyzandeR dường như đang đi đúng hướng. – vpipkt