Zachowanie, które widzisz, wynika z tego, jak ggplot2
radzi sobie z danymi, które znajdują się poza zakresami osi wykresu. Możesz zmienić to zachowanie w zależności od tego, czy używasz scale_y_continuous
(lub równoważnie ylim
), czy coord_cartesian
też ustawiasz zakresy osi, jak wyjaśniono poniżej.
library(ggplot2)
ggplot(mtcars, aes(mpg, hp)) +
geom_point()
W poniższym kodzie jeden punkt z hp = 335 jest poza zakresem y wykresu. Ponadto, ponieważ wcześniej scale_y_continuous
ustawialiśmy zakres osi Y, ten punkt nie jest uwzględniany w żadnych innych statystykach ani miarach sumarycznych obliczanych przez ggplot, takich jak linia regresji liniowej.
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).
W poniższym kodzie punkt z hp = 335 nadal znajduje się poza zakresem y wykresu, ale mimo to ten punkt jest uwzględniany we wszelkich statystykach lub miarach sumarycznych obliczanych przez ggplot, takich jak linia regresji liniowej. Dzieje się tak, ponieważ wcześniej coord_cartesian
ustawialiśmy zakres osi Y, a ta funkcja nie wyklucza punktów, które znajdują się poza zakresami wykresu, gdy wykonuje inne obliczenia na danych.
Jeśli porównasz ten i poprzedni wykres, zobaczysz, że linia regresji liniowej na drugim wykresie ma nieco bardziej strome nachylenie, ponieważ punkt o hp = 335 jest uwzględniany podczas obliczania linii regresji, mimo że nie jest widoczny na wykresie .
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
coord_cartesian(ylim=c(0,300)) +
geom_smooth(method="lm")
y
Oś w tej kwestii jest ograniczona . Ze względu na tę funkcję wartości są ograniczone od 0 do 0,12:ylim(0,0.12)