Skip to main content

A set of utilities for testing matplotlib plots in an object-oriented manner.

Project description

Build Status codecov.io Documentation Status

A set of utilities for checking and grading matplotlib plots. Please note that ``plotchecker`` is only compatible with Python 3, and not legacy Python 2. Documentation is available on Read The Docs.

The inspiration for this library comes from including plotting exercises in programming assignments. Often, there are multiple possible ways to solve a problem; for example, if students are asked to create a “scatter plot”, the following are all valid methods of doing so:

# Method 1
plt.plot(x, y, 'o')

# Method 2
plt.scatter(x, y)

# Method 3
for i in range(len(x)):
    plt.plot(x[i], y[i], 'o')

# Method 4
for i in range(len(x)):
    plt.scatter(x[i], y[i])

Unfortunately, each of the above approaches also creates a different underlying representation of the data in matplotlib. Method 1 creates a single Line object; Method 2 creates a single Collection; Method 3 creates n Line objects, where n is the number of points; and Method 4 creates n Collection objects. Testing for all of these different edge cases is a huge burden on instructors.

While some of the above options are certainly better than others in terms of simplicity and performance, it doesn’t seem quite fair to ask students to create their plots in a very specific way when all we’ve asked them for is a scatter plot. If they look pretty much identical visually, why isn’t it a valid approach?

Enter plotchecker, which aims to abstract away from these differences and expose a simple interface for instructors to check students’ plots. All that is necessary is access to the Axes object, and then you can write a common set of tests for plots independent of how they were created.

from plotchecker import ScatterPlotChecker

axis = plt.gca()
pc = ScatterPlotChecker(axis)
pc.assert_x_data_equal(x)
pc.assert_y_data_equal(y)
...

Please see the Examples.ipynb notebook for futher examples on how plotchecker can be used.

Caveats: there are many ways that plots can be created in matplotlib. plotchecker almost certainly misses some of the edge cases. If you find any, please submit a bug report (or even better, a PR!).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

plotchecker-0.1.0-py2.py3-none-any.whl (15.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file plotchecker-0.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for plotchecker-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d1a5948b78d9cb5a0d6d2ff780780e537622f6db2de43de8a38cacd035c6ee14
MD5 b295cba85f0a964969d521f8d08bf155
BLAKE2b-256 8247dd4df9b707ac6080ce647a60d37693c5fc6ac3da4fa1267b1491f18a3758

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page