Kurztipp 3: Plot-Legende mit Python

Viktors Kurztipp

Heute im Fokus: Steigerung der Übersichtlichkeit bei Plots mit mehreren Graphen durch Hinzufügen einer Legende.

Momentan wiederhole ich einige Aufgaben zum Fach Werkstoffkunde und lasse mir Verläufe mit Python-Plots anzeigen. Meist sind es mehrere Kurven, die miteinander verglichen werden sollen. Um den Plot auf Anhieb zu verstehen und das Richtige zu vergleichen, gebe ich zu jeder Kurve gleich die Legende mit an. So kann ich sofort erkennen, um was es sich bei den einzelnen Diagrammen handelt. Also dreht sich der heutige Kurztipp um das Hinzufügen von Legenden zu Plots mit dem Python-Modul Pylab.

Legende bei einem einzigen Plot

Je nach Zusammenhang kann es sinnvoll sein, nicht alle Kurven in einen einzigen Plot zu zeichnen. Daher habe ich den Kurztipp aufgeteilt, der erste Teil geht um die Legende bei einem einzigen Plot.

Das folgende Beispiel nehme ich aus einer der Werkstoffkunde-Aufgaben, in der es um Abkühlkurven geht. Die Funktion an sich ist zur Erklärung nicht wichtig und wird hier gnadenlos aus dem Kontext gerissen dargestellt.

import numpy as np
import pylab as pl
def abk_lin(TA,TE,t,v):
    test = (TA-TE)/v
    erg = np.zeros_like(t)
    i = 0
    for time_ in t:
        
        if (time_ <= test):
            erg[i] = TA-v*time_
        else:
            erg[i] = TE
        i = i + 1
    return erg
def abk_newton(TA,TE,t,v):
    return (TA-TE)*np.exp(-v/(TA-TE)*t)+TE
TA = 900.0
TE = 20.0
v1 = 100.0
v2 = 1.0
dt = 10.0 
t  = np.arange(0.0,3600.0+dt,dt)
pl.plot(t,abk_lin(TA,TE,t,v1),label='Linear v=100')
pl.plot(t,abk_lin(TA,TE,t,v2),label='Linear v=1')
pl.plot(t,abk_newton(TA,TE,t,v1),label='Newton v=100')
pl.plot(t,abk_newton(TA,TE,t,v2),label='Newton v=1')
pl.legend()
pl.show()

Der Beispiel-Code generiert ein Fenster, welches die vier Kurven enthält. Zusätzlich befindet sich in der rechten oberen Ecke eine einfache Legende. Ein Bild sagt mehr als tausend Worte:

Abkühlkurven-Plot mit Legende

Beispiel: Plot, vier Kurven mit Legende

Allgemein gehe ich bei der Erstellung einer Legende folgendermaßen vor:

  • plot-Befehl mit label kennzeichnen
  • Legende mit legend() anzeigen

Und das war es schon!

Ist eine Gruppierung der Kurven sinnvoll, kann man sich die subplot-Funktion zu Nutze machen und dort auch separat die Legende erstellen.

Legende bei mehreren Plots mit pylab.subplot

Um diese Funktion zu verdeutlichen, verwende ich wieder die Abkühlkurven aus dem vorherigen Beispiel und modifiziere die Darstellung etwas:

subplot(211)
pl.plot(t,abk_lin(TA,TE,t,v1),label='Linear v=100')
pl.plot(t,abk_newton(TA,TE,t,v1),label='Newton v=100')
pl.legend()
subplot(212)
pl.plot(t,abk_lin(TA,TE,t,v2),label='Linear v=1')
pl.plot(t,abk_newton(TA,TE,t,v2),label='Newton v=1')
pl.legend()
pl.show()

Diese Variante liefert nun zwei Plot-Bereiche mit jeweils einer Legende:

Abkühlkurven in zwei Plots mit Legende - Python

Beispiel: Zwei Plots mit jeweils einer Legende

Als nächstes müsste noch die x-Achse des oberen Plots angepasst werden, was aber eine andere Geschichte ist.

Ist das alles?

Es gibt noch einige weitere Möglichkeiten Legenden einzufügen. Eine der Möglichkeiten erlaubt das Weglassen des label-Tags, dafür schreibt man die Bezeichnungen in den legend()-Befehl. Doch dies soll ja ein Kurztipp sein, weiterführende Infos zur Legende gibt es auf der Pylab-Dokumentationsseite: Matplotlib. Falls es gewünscht wird, kann ich gerne auch etwas ausführlicher über das Thema schreiben, dafür bitte einen Kommentar hinterlassen.

Kommentar absenden

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>