Skip to main content

graph-polisher is a library that helps you clean your plotly figures.. This library is inspired by the book Storytelling with Data by Cole Nussbaumer Knaflic (

Project description


PyPI version build status coverage report Code style: mypy PyPI - License


Graph polisher is a library that helps you clean your plotly figures. This library was inspired by the book "Storytelling with Data by Cole Nussbaumer Knaflic (


To start our graph polishing, we will create a basic bar graph:

import pandas as pd
import as px

report_data = [
    {'name': 'Time Sheets', 'exported': 394},
    {'name': 'Schedules', 'exported': 171},
    {'name': 'overtime', 'exported': 457},
    {'name': 'Time-off', 'exported': 93},
    {'name': 'Shift Requests', 'exported': 30},
df = pd.DataFrame(report_data)

fig =, title='Exported Reports', x='name', y='exported')

Raw Bar Plot

Cleaning the Graph

Next, we will remove all the unnecessary information from the graph. By removing unnecessary things from the graph, we will then be able to focus on important information that will help us drive the user to where we want them to focus on.

To remove all that default unnecessary information with graph-polisher do the following:

Remove grid lines and background

Grid lines usually compete with the information being shown. If you really think that you should include them, make them thin and grey so it doesn't call attention.

import graph_polisher


Bar No Grid Plot

Send to background

The dark colors (black text, bold text) of the graph also calls for attention. We can easily make them less attention grabbing by sending them to the background. Sending them to the background will set the text color to a more neutral color like grey.


Send to backgroung

Notice the difference between the default bar graph and our new version.

Default Bar Plot No Distractions Bar Plot
Raw Bar Plot Send to backgroung

Now you have a graph that you can easily add intentional attention grabbing information so that your user is guided through the information you are trying to present.

Deploying pip library

Build the pip library package to deploy to pip:

python3 sdist bdist_wheel

Publish to pip. You can follow steps here

Note that you will need to install twine and register your pypi. Usually in the file ~/.pypirc

python3 -m twine upload --repository pypi dist/*


pip install graph-polisher


To test this project run:


Notebook Example (with unnotebook)


You can use this to see how the library modifies the plots. We are using unnotebook to plot the examples.

  1. Build and push notebook image:
docker build . -t graph-polisher
  1. Run notebook
docker-compose up notebook


docker run --rm -it \
    -v /Users/rigo/Documents/Projects/notebooks/stock-predictions:/notebooks \
    -p 8899:8899 unclutterer
  1. Open http://localhost:8899/ and open the notebook you want to run.

Project details

Download files

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

Source Distribution

graph-polisher-1.0.2.tar.gz (4.9 kB view hashes)

Uploaded source

Built Distribution

graph_polisher-1.0.2-py3-none-any.whl (5.9 kB view hashes)

Uploaded py3

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