Поведение, которое вы видите, связано с тем, как 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)