starter code
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.4
## ✔ tibble 3.1.8 ✔ dplyr 1.0.10
## ✔ tidyr 1.2.1 ✔ stringr 1.4.1
## ✔ readr 2.1.2 ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
adata = c(50,55,60,60,60,61,65,65,65,66,70,70,75,75,80,80,85,90,95,99)
bdata = c(50,65,65,60,60,70,70,70,75,75,75,80,80,80,80,80,80,80,85,85,85,90,90,95)
dfa = tibble(score=adata) %>% mutate(class="A")
dfb = tibble(score=bdata) %>% mutate(class="B")
df <- bind_rows(dfa,dfb) %>% mutate(class = factor(class, levels=c("A","B")))
plot
ggplot(df, aes(score)) +
geom_dotplot(binwidth = 5, dotsize = 0.5) +
facet_wrap(~class, ncol =1) +
ylab('') +
theme(
axis.text.y=element_blank(),
axis.ticks.y=element_blank(),
panel.grid.minor.y=element_blank(),
panel.grid.major.y=element_blank()
)

advanced
n=300
df33 = tibble(x=runif(n)*100, y=runif(n)*100) %>% mutate(x=round(x), y=round(y))
dsum33 = df33 %>% summarize(mx = mean(x), my=mean(y), sx=sd(x), sy=sd(y), width=sx, height=sy)
mx = dsum33 %>% .[['mx']]
my = dsum33 %>% .[['my']]
plot
ggplot(df33) +
geom_point(aes(x,y)) +
theme_light()
