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.
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
- Munzner, T. (2014). Visualization Analysis and Design. CRC Press.
- Cairo, A. (2016). The Truthful Art. New Riders.
Recommended Resources
| 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
- Information is Beautiful
- FlowingData
- The Pudding
- Observable Featured Notebooks
- Kantar Information is Beautiful Awards
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. |