• Applied Data Visualization (with R)
  • Preface
  • 1 About this workshop
    • 1.1 About me
    • 1.2 Your turn
    • 1.3 Workshop: Contact & Outline & Dates
    • 1.4 Workshop: Script & Material
    • 1.5 Workshop: Online vs. offline
    • 1.6 Workshop: Goals (1)
    • 1.7 Workshop: Goals (2)
    • 1.8 Workshop: Literature
    • 1.9 Workshop: Software we will use
    • 1.10 Workshop: Classifications = structure? (1)
    • 1.11 Workshop: Classifications = structure? (2)
    • 1.12 Great resources
  • 2 Introduction
    • 2.1 What is data visualization?
    • 2.2 Why visualize? Anscombes’s quartet (1)
    • 2.3 Why visualize? Anscombes’s quartet (2)
    • 2.4 Why visualize? Anscombes’s quartet (3)
    • 2.5 Why visualize? The Datasaurus Dozen
    • 2.6 The “best” graph ever drawn
      • 2.6.1 What is a good graph?
      • 2.6.2 The graph
      • 2.6.3 Modern version
      • 2.6.4 Tufte’s view: What can we learn from it?
    • 2.7 Why visualize? Further examples
    • 2.8 Summary: What did we learn so far?
  • 3 Quality of Graphs
    • 3.1 Criteria?
    • 3.2 Aims: Exploration vs. Explanation/Presentation
    • 3.3 Edward Tufte
    • 3.4 Graphical displays should…
    • 3.5 Principals of graphical excellence
    • 3.6 Graphical integrity: Example & exercise (1)
    • 3.7 Graphical integrity: Example & exercise (1)
    • 3.8 Graphical integrity
    • 3.9 Theory of data graphics (ToDG): Data-ink and graphical re-design
    • 3.10 ToDG: Data-ink Exercise 1
    • 3.11 ToDG Data-ink Exercise 1 (Solution)
    • 3.12 ToDG: Data-ink Exercise 2
    • 3.13 ToDG: Data-ink Exercise 2 (Solution)
    • 3.14 ToDG: Principles
    • 3.15 ToDG: Data density and small multiples (1)
    • 3.16 ToDG: Data density and small multiples (2): Exercise
    • 3.17 ToDG: Data density and small multiples (3)
    • 3.18 ToDG: Aesthetics and Technique in Graphical Design (1)
    • 3.19 ToDG: Aesthetics and Technique in Graphical Design (2)
    • 3.20 ToDG: Design is choice
    • 3.21 Perception/decoding: Edges, contrasts and colors
    • 3.22 Perception/decoding: Color models RGB (1)
    • 3.23 Perception/decoding: Color models HCL (2)
    • 3.24 Perception/decoding: Color Exercise (3)
    • 3.25 Perception/decoding: Color (4)
    • 3.26 Perception/decoding: Preattentive search & patterns
    • 3.27 Perception/decoding: Visual tasks
    • 3.28 Perception/decoding: Visual tasks and channels/mappings
    • 3.29 Perception/decoding: Visual tasks and channels/mappings
    • 3.30 Perception/decoding: Visual tasks and channels/mappings
    • 3.31 Perception: Acceptability principles
    • 3.32 Solution? Spelling = grammar = poetry?
    • 3.33 Summary
    • 3.34 Quality check questions
  • 4 Grammar of graphics & Ggplot2
    • 4.1 Grammar
    • 4.2 Grammar components & ggplot2 (1)
    • 4.3 Grammar components & ggplot2 (2)
    • 4.4 Grammar doesn’t
    • 4.5 Steps of visualizing
    • 4.6 Explore ggplot2 object: Exercise
    • 4.7 Data underlying graphs
    • 4.8 Data, aesthetics mappings and layers: Exercise 1
    • 4.9 Data, aesthetics mappings and layers: Exercise 2
    • 4.10 Various geoms
    • 4.11 Aesthetic Attributes: Color, Size, Shape (1)
    • 4.12 Aesthetic Attributes: Color, Size, Shape (2)
    • 4.13 Aesthetic Attributes: Exercise (1)
    • 4.14 Aesthetic Attributes: Exercise (2)
    • 4.15 Lab: Labels & Annotations (1)
    • 4.16 Labels & Annotations (2)
    • 4.17 Labels & Annotations: Exercise (3)
    • 4.18 Facetting (1)
    • 4.19 Facetting: Exercise (2)
    • 4.20 Axes
    • 4.21 Axes: Exercise
    • 4.22 Output
    • 4.23 Interactive
  • 5 Visualizing for description
    • 5.1 Exploratory summary graphs
      • 5.1.1 Lab: Data & Code
    • 5.2 Summary statistics/graphs for a paper
      • 5.2.1 Data & Packages & functions
      • 5.2.2 Graph
      • 5.2.3 Lab: Data & Code
      • 5.2.4 Exercise
    • 5.3 Barplot: Unsummarized vs. summarized data
    • 5.4 Categorical variables (2+)
      • 5.4.1 Data & Packages & functions
      • 5.4.2 Graph
      • 5.4.3 Lab: Data & Code
      • 5.4.4 Exercise
    • 5.5 Numeric vs. categorical: Various plot types
      • 5.5.1 Data & Packages & functions
      • 5.5.2 Graph
      • 5.5.3 Lab: Data & Code
    • 5.6 Numeric vs. various variables
      • 5.6.1 Lab: Data & Code
    • 5.7 Numeric vs. numeric: Correlograms
      • 5.7.1 Data & Packages & functions
      • 5.7.2 Graph
      • 5.7.3 Lab: Data & Code
    • 5.8 Numeric vs. numeric: Scatterplots + smoother
      • 5.8.1 Data & Packages & functions
      • 5.8.2 Graph
      • 5.8.3 Lab: Data & Code
    • 5.9 Time: Line charts & events
      • 5.9.1 Data & Packages & functions
      • 5.9.2 Graph
      • 5.9.3 Lab: Data & code
      • 5.9.4 Exercise
    • 5.10 Time: Wave participation & time-point presence
      • 5.10.1 Data & Packages & functions
      • 5.10.2 Graph
      • 5.10.3 Lab: Data & Code
      • 5.10.4 Exercise
    • 5.11 Time: Means across time (or other categories)
      • 5.11.1 Data & Packages & functions
      • 5.11.2 Graph
      • 5.11.3 Lab: Data & Code
    • 5.12 Time: Slope charts
      • 5.12.1 Data & Packages & functions
      • 5.12.2 Graph(s)
      • 5.12.3 Lab: Data & Code
  • 6 Visualizing statistical results
    • 6.1 Data & Packages & functions
    • 6.2 Graph: Coefficient plots
      • 6.2.1 Lab: Data & code
    • 6.3 Exercise
    • 6.4 Graph: Coefficient plots with facetting
      • 6.4.1 Lab: Data & code
    • 6.5 Coefficient plots: Coloring
      • 6.5.1 Lab: Data & code
    • 6.6 Graph: Coefficient plots with facetting and coloring
      • 6.6.1 Lab: Data & code
    • 6.7 Graph: Predicted values
      • 6.7.1 Lab: Data & code
    • 6.8 Useful graphs & resources
  • 7 Visualizing geographic data
    • 7.1 Geographic data: Vector boundaries & Area metadata
    • 7.2 Geographic data: Point metadata
    • 7.3 Geographic data: Raster image
    • 7.4 Packages & functions
    • 7.5 Graph
      • 7.5.1 Lab: Data & Code
    • 7.6 Exercise
  • 8 Animations & movies
    • 8.1 Packages
    • 8.2 Concepts
    • 8.3 Concepts: Rendering
    • 8.4 Graph
    • 8.5 Lab: Data & code
    • 8.6 Exercise
  • 9 Interactive data visualization: Intro & theory
    • 9.1 Readings
    • 9.2 Some interactive visualizations
    • 9.3 Interactivity: Theory & Concepts
    • 9.4 Elements of a graph
    • 9.5 Elements & Interactivity
    • 9.6 Some concepts of interaction
      • 9.6.1 Example/Exercise (1)
      • 9.6.2 Example/Exercise (2)
    • 9.7 Data
    • 9.8 Data: Subsetting
    • 9.9 Data: Manipulation/Creation
    • 9.10 Tools
  • 10 Interactive data visualization: Plotly
    • 10.1 What is Plotly?
    • 10.2 Example(s) for starters
    • 10.3 Interactive elements
    • 10.4 Basic workings
    • 10.5 Basic functions
    • 10.6 Two ways of setup
    • 10.7 Plot types: Basic 2D
    • 10.8 Layout
    • 10.9 Layout: Margins
    • 10.10 Layout: Axes
    • 10.11 Exercise: Layout and basic plot types
    • 10.12 Markers & Lines: Symbols
    • 10.13 Markers
    • 10.14 Lines
    • 10.15 Shapes: Circles etc.
    • 10.16 Colouring data: Continuous
    • 10.17 Colouring data: Categories
    • 10.18 Exercise: Markers & Colours
    • 10.19 Legends
    • 10.20 Annotations: Dynamic
    • 10.21 Annotations: Static
    • 10.22 Exporting/Saving Graphs
    • 10.23 Small multiples (1)
    • 10.24 Small multiples (2)
    • 10.25 Exercise: Dynamic annotations and small multiples
  • 11 Interactive data visualization: Shiny
    • 11.1 What is Shiny?
    • 11.2 Setting up shinyapps.io
    • 11.3 Example for starters
    • 11.4 Basic steps
    • 11.5 UI: Layout
    • 11.6 UI: Layout advanced
      • 11.6.1 tabsetPanel and tabPanel
      • 11.6.2 HTML tag functions
      • 11.6.3 Images
    • 11.7 UI: Control widgets/inputs (1)
    • 11.8 UI: Control widgets/inputs Exercise (2)
    • 11.9 UI: Outputs (reactivity)
    • 11.10 SERVER
    • 11.11 SERVER: Example
    • 11.12 Exercise: SERVER
    • 11.13 Summary
    • 11.14 LOADING THINGS (1)
    • 11.15 LOADING THINGS (2)
    • 11.16 Exercise
    • 11.17 Example: A simple regression app
  • 12 COMBINING Shiny and Plotly
    • 12.1 A simple example
  • 13 Appendix
    • 13.1 Line vs. path plots
    • 13.2 Add notes directly to plot
    • 13.3 Plotly: Scatterplot matrices
    • 13.4 Plotly: Boxplots
    • 13.5 Plotly: Visualizing statistical results
      • 13.5.1 Dotplots & error bars
      • 13.5.2 Exercise: Dotplots & error bars
    • 13.6 Plotly: Ribbons (confidence intervalls)
      • 13.6.1 Exercise: Ribbons (1)
      • 13.6.2 Exercise: Ribbons (2)
    • 13.7 Plotly: Maps
      • 13.7.1 Example
    • 13.8 Plotly 3D
      • 13.8.1 3D Layout
    • 13.9 Some more ressources
    • 13.10 Writing functions to plot
    • 13.11 Problems I encountered
    • 13.12 Creating ggplots in loops
    • 13.13 Other visualizations
    • 13.14
  • 14 References
  • References
  • Published with bookdown

GESIS Workshop: Applied Data Visualization

8.6 Exercise

  • You can choose between…
  1. …changing and potentially improving Figure 8.1.
  2. …animating some of your own data (potentially this takes longer).
  3. …playing around with the gapminder dataset used in the animation in Figure 8.2 below (official example of the package).
    • e.g., pick another variable and/or change the animation details.
gapminder <- gapminder %>% filter(continent!="Oceania")
  
p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
    geom_point(alpha = 0.7, show.legend = FALSE) +
    scale_colour_manual(values = country_colors) +
    scale_size(range = c(2, 12)) +
    scale_x_log10() +
    facet_wrap(~continent) +
    labs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +
    transition_time(year) +
    ease_aes('linear')

  anim_save("animation_gapminder.gif", 
            animation = last_animation(), 
            path = "www/images/")
Animating gapminder data

Figure 8.2: Animating gapminder data