Section 27 Two Factors

27.1 Bar & Mosaic plot

The function geom_bar creates a bar plot with vertical or horizontal bars.

27.1.1 Example 1

data(mpg)

str(mpg)
Classes 'tbl_df', 'tbl' and 'data.frame':   234 obs. of  11 variables:
 $ manufacturer: chr  "audi" "audi" "audi" "audi" ...
 $ model       : chr  "a4" "a4" "a4" "a4" ...
 $ displ       : num  1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
 $ year        : int  1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
 $ cyl         : int  4 4 4 4 6 6 6 4 4 4 ...
 $ trans       : chr  "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
 $ drv         : chr  "f" "f" "f" "f" ...
 $ cty         : int  18 21 20 21 16 18 18 18 16 20 ...
 $ hwy         : int  29 29 31 30 26 26 27 26 25 28 ...
 $ fl          : chr  "p" "p" "p" "p" ...
 $ class       : chr  "compact" "compact" "compact" "compact" ...
# Single factor

g <- ggplot(data=mpg, mapping=aes(x=class))
g <- g + geom_bar()
g

# Two factors

g <- ggplot(data=mpg, mapping=aes(x=class))
g <- g + geom_bar()
g <- g + geom_bar(aes(fill=drv))
g + theme_bw()

# coord_flip

g <- ggplot(data=mpg, mapping=aes(x=class))
g <- g + geom_bar()
g <- g + geom_bar(mapping=aes(fill=drv)) 
g <- g + coord_flip()
g + theme_bw()

# Interaction

mpg$class_drv <- paste0(mpg$class, '_', mpg$drv)
g <- ggplot(data=mpg, mapping=aes(x=class_drv))
g <- g + geom_bar(aes(fill=class))
g + theme_bw()

27.1.2 Example 2

data(HairEyeColor)

x <- HairEyeColor[,,2]
DF <- as.data.frame(x)

# position = 'stack'

g <- ggplot(data=DF, mapping=aes(x=Eye, fill=Hair))
g <- g + geom_bar(mapping=aes(weight=Freq), position='stack')
g <- g + scale_fill_manual(values = c('black','brown','red','yellow'))
g <- g + labs(title='Hair and Eye colour of Female')
g + theme_bw()

# position = 'dodge'

g <- ggplot(data=DF, mapping=aes(x=Eye, fill=Hair))
g <- g + geom_bar(mapping=aes(weight=Freq), position='dodge')
g <- g + scale_fill_manual(values = c('black','brown','red','yellow'))
g <- g + labs(title='Hair and Eye colour of Female')
g + theme_bw()