Hành vi bạn đang thấy là do cách ggplot2
xử lý dữ liệu nằm ngoài phạm vi trục của biểu đồ. 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 các dải trục, như được giải thích bên dưới.
library(ggplot2)
ggplot(mtcars, aes(mpg, hp)) +
geom_point()
Trong đoạn mã dưới đây, một điểm có hp = 335 nằm ngoài phạm vi y của biểu đồ. 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 đo lường 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)) +
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 có hp = 335 vẫn nằm ngoài phạm vi y của biểu đồ, nhưng điểm này vẫn được đưa vào bất kỳ số liệu thống kê hoặc thước đo tóm tắt nào mà ggplot tính toán, chẳng hạn như đường hồi quy tuyến tính. Điều này là do chúng tôi đã sử dụng coord_cartesian
để đặt phạm vi trục y và hàm này không loại trừ các điểm nằm ngoài phạm vi biểu đồ khi nó thực hiện các phép tính khác trên dữ liệu.
Nếu bạn so sánh phần này và phần trước, bạn có thể thấy rằng đường hồi quy tuyến tính trong phần thứ hai có độ dốc lớn hơn một chút, vì điểm có hp = 335 được đưa vào khi tính toán đường hồi quy, mặc dù nó không hiển thị trong phần .
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
coord_cartesian(ylim=c(0,300)) +
geom_smooth(method="lm")
y
trục cho câu hỏi đó. Các giá trị được giới hạn từ 0 đến 0,12 vì chức năng này:ylim(0,0.12)