Этот подход не выглядит так же хорошо, как ваш пример, но это начало, и некоторая путаница может дать вам остальную часть пути.
Во-первых, некоторые данные для работы:
x <- seq(1:20)
y <- jitter(x,amount=1.5)
df <- data.frame(x,y)
Подход с использованием ggplot2
состоит в том, чтобы нарисовать geom_smooth
с очень маленьким промежутком (достаточно маленьким, чтобы вызвать множество ошибок, как вы увидите), а затем нанести точки с белыми границами поверх верхней частичто.
ggplot(df, aes(x,y)) +
geom_smooth(se=F, colour="black", span=0.15) +
geom_point(fill="black", colour="white", shape=21, size=2.5) +
theme_minimal()
Недостатки: Как я уже отмечал выше, вы увидите много ошибок об особенностях вЛесс подходит, потому что пролет такой маленький.Во-вторых, вы заметите, что не все точки центрированы на линии, что имеет смысл, поскольку вы используете лессовую посадку для линии.Наконец, кажется, что нет способа изменить ширину линии вокруг точек, поэтому вы получите довольно тонкую белую рамку.