Data Visualization

A graduate course covering principles and practices of data visualization, with a focus on theory, tools, and best practices for communicating data insights effectively.

Instructor Zhicong Chen
Term Spring 2025
Location Nanjing University

Course Overview

This course covers the theory and practice of data visualization for graduate students in journalism and communication. Students learn to design effective visualisations and implement them with Python (matplotlib, seaborn, Plotly, Altair) and D3.js, and to critically evaluate design choices.

Learning Objectives

By the end of this course, students will be able to:

  • Explain the perceptual and cognitive principles behind effective data visualisation
  • Select appropriate chart types and visual encodings for different data and tasks
  • Implement static and interactive visualisations in Python and D3.js
  • Build and deploy a simple interactive data dashboard
  • Critique visualisations for accuracy, clarity, and accessibility

Prerequisites

  • Proficiency in Python and pandas (equivalent to the Introduction to Python course)
  • Basic familiarity with HTML/CSS is helpful for the D3.js module

Level

Graduate

Institution

School of Journalism and Communication, Nanjing University

Offered

Spring 2025

Required Texts

Resource Link
matplotlib Documentation matplotlib.org
seaborn Documentation seaborn.pydata.org
Plotly Python plotly.com/python
Altair altair-viz.github.io
D3.js d3js.org
Observable (D3 examples) observablehq.com
ColorBrewer colorbrewer2.org
Gephi gephi.org
Streamlit streamlit.io
Datawrapper datawrapper.de

Inspiration

Assessment

Component Weight
Weekly visualisation assignments 35%
Midterm critique essay 15%
Final visualisation project 40%
Participation & peer critique 10%

Schedule

Week Date Topic Materials
1 Week 1 Why Visualize Data?

The power and limits of visualization; pre-attentive attributes; Anscombe’s quartet; Datasaurus.

2 Week 2 Perception and Visual Encoding

Stevens’ power law, Weber-Fechner, Cleveland & McGill rankings, the grammar of graphics.

3 Week 3 Colour in Visualization

Colour models, sequential vs. diverging vs. categorical palettes, colour blindness, ColorBrewer.

4 Week 4 Charting with Python: matplotlib & seaborn

Figure/axes model, common chart types, annotation, themes, saving publication-quality figures.

5 Week 5 Interactive Visualization with Plotly & Altair

Hover tooltips, zoom/pan, linked brushing, declarative grammars.

6 Week 6 Web-Based Visualization with D3.js

DOM manipulation, data binding, scales and axes, transitions, the D3 ecosystem.

7 Week 7 Geospatial Visualization

Projections, choropleths, flow maps, dot density, GeoPandas, Folium, Leaflet.

8 Week 8 Network Visualization

Node-link diagrams, adjacency matrices, force-directed layouts, Gephi, networkx drawing.

9 Week 9 Text and Time-Series Visualization

Word clouds (and their pitfalls), alluvial diagrams, small multiples, horizon charts.

10 Week 10 Dashboard Design with Streamlit

Building interactive data apps with Streamlit; layout, widgets, caching.

11 Week 11 Communicating Uncertainty

Error bars, confidence intervals, fan charts, probability distributions, frequency framing.

12 Week 12 Ethics, Accessibility, and Misleading Visuals

Truncated axes, dual axes, cherry-picking, WCAG colour contrast, alt-text best practices.

13 Week 13 Final Project Critique

Peer review of draft visualisation projects; instructor feedback on design and coding.