In fact, I have come up with a similar solution without geom_count() - thus it is not so quick or elegant as it potentially could be.
And geom_smooth() does the regression on the aggregated data instead of raw.
Therefore using geom_count() seems better, if possible here..
EDIT: I found a way to show proper regression with geom_smooth() by making a new data frame with original galton and aggregated df
STILL the question remains - is there a quicker way to do this with geom_count()?
library(tidyverse)
library(UsingR)
pc <- xyTable(galton$parent, galton$child)
pc <- as.data.frame(pc)
names(pc) <- c("parent","child","number")
df <- merge(galton,pc)
ggplot(df)+
aes(parent, child, size=number)+
geom_point()+
geom_smooth(method="lm", show.legend = F)+
geom_text(aes(label=number, color = "red", size=2), show.legend = F)