## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
The facet_grid function is best suited for faceting against multiple variables.
Formula for the facet_grid function is row variables ~ column variables.
# plot salary histograms by rank and sexggplot(Salaries, aes(x = salary /1000)) +geom_histogram(color ="white",fill ="cornflowerblue") +facet_grid(sex ~ rank) +labs(title ="Salary histograms by sex and rank",x ="Salary ($1000)")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
You can also combine grouping variables together and faceting together in one graph, such as what we do with the gapminder data from the gapminder package below.
Note that the dot in the faceting formula .~ rank + discipline means that there are no row variables so rank + discipline ~. means no column variables.
Also note the theme functions used in the code below are used to simplify the background color, rotate the x-axis text, and make the font size smaller
# calculate means and standard errors by sex,# rank and disciplinelibrary(dplyr)plotdata <- Salaries %>%group_by(sex, rank, discipline) %>%summarize(n =n(),mean =mean(salary),sd =sd(salary),se = sd /sqrt(n))
## `summarise()` has grouped output by 'sex', 'rank'. You can override using the
## `.groups` argument.
# create better labels for disciplineplotdata$discipline <-factor(plotdata$discipline,labels =c("Theoretical","Applied"))# create plotggplot(plotdata, aes(x = sex, y = mean,color = sex)) +geom_point(size =3) +geom_errorbar(aes(ymin = mean - se, ymax = mean + se),width = .1) +scale_y_continuous(breaks =seq(70000, 140000, 10000),label = scales::dollar) +facet_grid(. ~ rank + discipline) +theme_bw() +theme(legend.position ="none",panel.grid.major.x =element_blank(),panel.grid.minor.y =element_blank()) +labs(x="", y="", title="Nine month academic salaries by gender, discipline, and rank",subtitle ="(Means and standard errors)") +scale_color_brewer(palette="Set1")