graph-polisher
[[TOC]]
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 (https://www.kobo.com/us/en/ebook/storytelling-with-data).
Usage
To start our graph polishing, we will create a basic bar graph:
import pandas as pd
import plotly.express 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 = px.bar(df, title='Exported Reports', x='name', y='exported')
fig.show()
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
graph_polisher.remove_grids(figure=fig)
graph_polisher.remove_background(figure=fig)
fig.show()
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.
graph_polisher.send_to_background(fig)
fig.show()
Notice the difference between the default bar graph and our new version.
Default Bar Plot | No Distractions Bar Plot |
---|
| |
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 setup.py 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/*
Installation
pip install graph-polisher
Testing
To test this project run:
pytest
Notebook Example (with unnotebook)
Prerequisite: https://www.docker.com/
You can use this to see how the library modifies the plots. We are using
unnotebook to plot the examples.
- Build and push
notebook
image:
docker build . -t graph-polisher
- Run notebook
docker-compose up notebook
or
docker run --rm -it \
-v /Users/rigo/Documents/Projects/notebooks/stock-predictions:/notebooks \
-p 8899:8899 unclutterer
- Open http://localhost:8899/ and open the notebook you want to run.