Поведінка, яку ви бачите, пов’язана з тим, як ggplot2обробляються дані, що знаходяться за межами діапазонів осей графіку. Ви можете змінити цю поведінку залежно від того, використовуєте scale_y_continuous(або, що еквівалентно ylim), або coord_cartesianвстановлюєте діапазони осей, як пояснено нижче.
library(ggplot2)
ggplot(mtcars, aes(mpg, hp)) +
geom_point()
У наведеному нижче коді одна точка з hp = 335 знаходиться поза діапазоном y графіку. Крім того, оскільки ми використовували scale_y_continuousдля встановлення діапазону осі y, ця точка не входить до будь-якої іншої статистики або зведених показників, розрахованих ggplot, таких як лінійна лінія регресії.
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).
У наведеному нижче коді точка з hp = 335 все ще перебуває поза діапазоном y графіку, але, тим не менше, ця точка включена в будь-яку статистику або підсумкові міри, які обчислює ggplot, наприклад лінію лінійної регресії. Це тому, що раніше ми coord_cartesianвстановлювали діапазон осі y, і ця функція не виключає точок, що знаходяться за межами діапазону графіку, коли вона робить інші обчислення даних.
Якщо порівняти цей та попередній графік, ви зможете побачити, що лінія лінійної регресії на другому графіку має трохи крутіший нахил, оскільки точка з hp = 335 враховується при обчисленні лінії регресії, хоча це не видно на графіку .
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
coord_cartesian(ylim=c(0,300)) +
geom_smooth(method="lm")
yвісь цього питання. Значення обмежені між 0 і 0,12 через цю функцію:ylim(0,0.12)