Engaging plots, made easy.

Easily turn your data into engaging visualizations. Powerful API for coders. Powerful app for everyone.

from plotapi import Chord

Chord(matrix, names).show()

API for coders

Pixels per percentage

Let's look at a percentage-based approach to handling data with very high values or many sources and targets.

For example, if we had a dataset that included values that were in the millions, Terminus may end up trying to process and display a million or more pixels on-screen simultaneously. The result would likely be crashing the tab or browser! Whilst that can be managed with the previously discussed pixel_batch_size and pixel_journey_duration, that approach will likely result in an animation that lasts too long.

Instead, we can start representing our data as a percentage. For example, we could represent 1% with 10, 100, or 1000 pixels.

Let’s demonstrate this with a high-value dataset.

Sample data

Let’s import PlotAPI and load our sample data.

from plotapi import Terminus

links = [
    {"source":"England", "target":"Germany", "value": 100000},
    {"source":"England", "target":"France", "value": 300000},
    {"source":"England", "target":"Spain", "value": 500000},
    {"source":"England", "target":"Italy", "value": 400000},
    {"source":"England", "target":"Japan", "value": 8000},

    {"source":"Ireland", "target":"Germany", "value": 350000},
    {"source":"Ireland", "target":"France", "value": 375000},
    {"source":"Ireland", "target":"Spain", "value": 175000},
    {"source":"Ireland", "target":"Italy", "value": 5000},
    {"source":"Ireland", "target":"Japan", "value": 40000},


We can see that we’re working with a dataset that contains higher values than usual. Let’s address this by setting percentage_by_source=True, which enables the percentage feature, and then pixels_per_percentage=100, which means we will be using 100 pixels to represent a single percent of a value. This also means our stats panel will display a percentage rather than the raw value.

Terminus(links, stats_text_width=100, colors="cool",
         percentage_by_source=True, pixels_per_percentage=100).show()