Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

graph-polisher

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

graph-polisher

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 (https://www.kobo.com/us/en/ebook/storytelling-with-data).

  • 1.0.2
  • PyPI
  • Socket score

Maintainers
1

graph-polisher

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

[[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()

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

graph_polisher.remove_grids(figure=fig)
graph_polisher.remove_background(figure=fig) 

fig.show()

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.

graph_polisher.send_to_background(fig)

fig.show()

Send to backgroung

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

Default Bar PlotNo Distractions Bar Plot
Raw Bar PlotSend 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 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.

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

or

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.

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc