Principles for Effective Visualizations

Angela Zoss
October 15, 2016

Principle 1: Order matters

plot of chunk unnamed-chunk-1

Order by semantics

data$answer <- 
    factor(data$answer,
           levels=c("None","A little", "Some", "A lot"),
           ordered = TRUE)

plot of chunk unnamed-chunk-3

plot of chunk unnamed-chunk-4

Order by value

data$academic_field <- 
    factor(data$academic_field,
           levels=names(
               sort(
                   table(
                       data$academic_field),decreasing=TRUE)))

plot of chunk unnamed-chunk-6

Principle 2: Put long categories on y-axis

plot of chunk unnamed-chunk-7

coord_flip()

plot of chunk unnamed-chunk-9

Oops!

data$academic_field <- 
    factor(data$academic_field,
           levels=names(
               sort(
                   table(data$academic_field),
                   decreasing=TRUE)))
data$academic_field <- 
    factor(data$academic_field,
           levels=names(
               sort(
                   table(data$academic_field))))

plot of chunk unnamed-chunk-12

Principle 3: Pick a purpose

plot of chunk unnamed-chunk-13

plot of chunk unnamed-chunk-14

Different placement helps with different comparisons.

fill=highest_degree
facet_grid(.~highest_degree)

Principle 4: Keep scales consistent

plot of chunk unnamed-chunk-17

plot of chunk unnamed-chunk-18

Keep all categories, manually set axes

scale_x_discrete(drop=FALSE)

scale_y_continuous(limits=c(0,40),breaks=c(0,10,20,30,40),minor_breaks=NULL)

plot of chunk unnamed-chunk-20

plot of chunk unnamed-chunk-21

Principle 5: Select meaningful colors

plot of chunk unnamed-chunk-22

Select colors manually, or use alternate palette

scale_fill_manual(
    values=c("snow4","snow3",
             "tan3","tan1",
             "turquoise2","turquoise4"))

scale_fill_manual(
    values=c("#fee391","#fe9929", "#cc4c02"))

# Also see package RColorBrewer
scale_fill_brewer(palette="BrBG")

plot of chunk unnamed-chunk-24

Questions?

angela.zoss@duke.edu

slides: URL