Improving Plot Aesthetics

In this data storytelling lesson, we'll start with a standard matplotlib plot and work to improve its appearance to better communicate the patterns we want a viewer to understand. Along the way, we'll introduce the design principles that informed those changes and provide a framework for you to apply them in the future.

As we build better-looking, clearer plots, we will be working with a dataset the Department of Education has compiled and Randol Olsen has cleaned and made available.

The Department of Education Statistics releases a dataset annually containing the percentage of bachelor's degrees granted to women from 1970 to 2012. The dataset is broken up into 17 categories of degrees, with each column as a separate category.

In this mission and the next few missions, we'll explore how we can communicate the nuanced narrative of gender gap using effective data visualization. You will learn the concept of data-ink ratio, which is the fractional amount of the plotting area dedicated to displaying the data, and discover that less is often more attractive. You will learn how to implement this “less is more” mantra in your visualizations by learning how to use Python and matplotlib to hide tick marks as well as hiding the spines of a graph


  • Learn how to improve the look of your graphs.
  • Learn about the data-ink ratio for plots.

Mission Outline

1. Aesthetics
2. Introduction To The Data
3. Introduction To The Data
4. Visualizing The Gender Gap
5. Data-Ink Ratio
6. Hiding Tick Marks
7. Hiding Spines
8. Comparing Gender Gap Across Degree Categories
9. Next Steps
10. Takeaways


Course Info:


The median completion time for this course is 6.5 hours. View Details

This course is requires a basic subscription. This course includes four missions and one guided project.  It is the fifth course in the Data Analyst in Python path and the Data Scientist in Python path.


Take a Look Inside

(function(d) { d.addEventListener("DOMContentLoaded", function() { var pathname = d.location.pathname.replace(/^[/]|[/]$/g, "").replace("/", "-"); var tags = d.getElementsByTagName("iframe"); var type = pathname.startsWith("course") ? "?course=" : pathname.startsWith("path") ? "?path=" : null; if (type) { var i; for (i = 0; i < tags.length; i++) { if (tags[i].src.indexOf("signup#iframe") !== -1) { tags[i].src = tags[i].src.replace("#iframe", "") + type + pathname + "#iframe"; } } } }, false); })(document);