Metergrafieken

Een metergrafiek heeft een cirkelboog, die een waarde weergeeft om de voortgang naar een doel aan te geven. De balk toont de doelwaarde en de arcering vertegenwoordigt de voortgang naar dat doel. Dit diagramtype wordt meestal gebruikt om bedrijfsindicatoren te illustreren, maar zijn natuurlijk ook op een andere manier inzetbaar.

In deze tutorial laat ik zien hoe je meterdiagrammen met de Plotly Open Source grafische bibliotheken maakt. Het script maak je in de terminal. Het resultaat is grafisch en wordt afgedrukt in de standaard webbrowser van de Raspberry Pi. Remote kun je wel SSH gebruiken, maar de uitkomst verschijnt in de browser van de desktop van de Pi. Je kunt natuurlijk wel VNC op afstand gebruiken.

Voor meer informatie over verschillende toegevoegde attributen, check indicator tutorial.

De Basismeter
In het eerste voorbeeld maken we een eenvoudige meter. Open een editor zoals nano en zet het volgende script erin. Sla het bestand op als meter1.py.

import plotly.graph_objects as go

fig = go.Figure(go.Indicator(
    mode = "gauge+number",
    value = 270,
    domain = {'x': [0, 1], 'y': [0, 1]},
    title = {'text': "Snelheid"}))

fig.show()

ModuleNotFoundError: No module named ‘plotly’
Hoogstwaarschijnlijk heb je de plotly-module (nog) niet geïnstalleerd. Doe dit met de opdracht:

pip install plotly

Zodra de installatie afgerond is start je het script op met:

python meter1.py

De Basismeter

Stappen, Delta en Drempel toevoegen
Het volgende voorbeeld (meter2.py) omvat het kenmerk “steps” dat wordt weergegeven als arcering binnen de radiale boog, “delta” wat het verschil is tussen de waarde en het doel (referentie – waarde), en “drempel” om grenzen te bepalen die je visueel waarschuwen als de waarde een gedefinieerde drempel.

import plotly.graph_objects as go

fig = go.Figure(go.Indicator(
    domain = {'x': [0, 1], 'y': [0, 1]},
    value = 450,
    mode = "gauge+number+delta",
    title = {'text': "Snelheid"},
    delta = {'reference': 380},
    gauge = {'axis': {'range': [None, 500]},
             'steps' : [
                 {'range': [0, 250], 'color': "lightgray"},
                 {'range': [250, 400], 'color': "gray"}],
             'threshold' : {'line': {'color': "red", 'width': 4}, 'thickness': 0.75, 'value': 490}}))

fig.show()

Aangepaste meterkaart
Het volgende voorbeeld (meter3.py) laat zien hoe je de meterdiagram opmaakt. Kijk voor meer informatie over alle mogelijke opties op de referentiepagina van plotly.com.

import plotly.graph_objects as go

fig = go.Figure(go.Indicator(
    mode = "gauge+number+delta",
    value = 420,
    domain = {'x': [0, 1], 'y': [0, 1]},
    title = {'text': "Snelheid", 'font': {'size': 24}},
    delta = {'reference': 400, 'increasing': {'color': "RebeccaPurple"}},
    gauge = {
        'axis': {'range': [None, 500], 'tickwidth': 1, 'tickcolor': "darkblue"},
        'bar': {'color': "darkblue"},
        'bgcolor': "white",
        'borderwidth': 2,
        'bordercolor': "gray",
        'steps': [
            {'range': [0, 250], 'color': 'cyan'},
            {'range': [250, 400], 'color': 'royalblue'}],
        'threshold': {
            'line': {'color': "red", 'width': 4},
            'thickness': 0.75,
            'value': 490}}))

fig.update_layout(paper_bgcolor = "lavender", font = {'color': "darkblue", 'family': "Arial"})

fig.show()

Referentie
Zoals je ziet, de metergrafieken zijn redelijk eenvoudig, maar boeiend om te maken. Naast de metergrafieken kun je met plotly ook andere grafieken maken. Kijk hiervoor op https://plotly.com/python/

Have A Nice Day!