Matplotlib-Graphen mit zwei y-Achsen erstellen

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Tutorial lernen Sie, wie Sie mit Matplotlib einen Graphen mit zwei y-Achsen erstellen. Der Graphen wird zwei Datensätze mit unterschiedlichen Maßeinheiten in unterschiedlichen Skalen anzeigen. Dieser Art von Graphen wird in der wissenschaftlichen Forschung häufig verwendet, um Beziehungen zwischen Variablen zu visualisieren, die nicht direkt vergleichbar sind.

Tipps für die virtuelle Maschine

Nachdem der Start der virtuellen Maschine abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Bibliotheken importieren

Zunächst müssen wir die erforderlichen Bibliotheken importieren. Wir werden Matplotlib und sein parasite_axes-Modul verwenden, um den Graphen zu erstellen.

import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms
from mpl_toolkits.axes_grid1.parasite_axes import HostAxes

Daten definieren

Als nächstes müssen wir die Daten definieren, die geplottet werden sollen. In diesem Beispiel haben wir einen Satz von Beobachtungen mit vier Variablen: Name, Winkelrichtbewegung, Fehler der Winkelrichtbewegung und Entfernung. Wir werden die Winkelrichtbewegung in lineare Geschwindigkeit umrechnen und sie gegen die FWHM (vollweite bei halber Höhe) der Beobachtungen aufzeichnen.

obs = [["01_S1", 3.88, 0.14, 1970, 63],
       ["01_S4", 5.6, 0.82, 1622, 150],
       ["02_S1", 2.4, 0.54, 1570, 40],
       ["03_S1", 4.1, 0.62, 2380, 170]]

## Umrechnungsfaktor von Winkelrichtbewegung in lineare Geschwindigkeit
pm_to_kms = 1./206265.*2300*3.085e18/3.15e7/1.e5

Den Graphen erstellen

Wir werden nun den Graphen mit den Funktionen HostAxes und twin() aus dem parasite_axes-Modul erstellen. HostAxes wird verwendet, um den Hauptgraphen zu erstellen, und twin() wird verwendet, um die sekundäre y-Achse zu erstellen.

fig = plt.figure()

## Erstellen eines HostAxes-Objekts
ax_kms = fig.add_subplot(axes_class=HostAxes, aspect=1)

## Erstellen der sekundären y-Achse mit transformierten Koordinaten
aux_trans = mtransforms.Affine2D().scale(pm_to_kms, 1.)
ax_pm = ax_kms.twin(aux_trans)

## Plotten der Daten
for n, ds, dse, w, we in obs:
    time = ((2007 + (10. + 4/30.)/12) - 1988.5)
    v = ds / time * pm_to_kms
    ve = dse / time * pm_to_kms
    ax_kms.errorbar([v], [w], xerr=[ve], yerr=[we], color="k")

## Festlegen der Achsenbeschriftungen
ax_kms.axis["bottom"].set_label("Linear velocity at 2.3 kpc [km/s]")
ax_kms.axis["left"].set_label("FWHM [km/s]")
ax_pm.axis["top"].set_label(r"Proper Motion [$''$/yr]")

## Ausblenden der Strichmarkenbeschriftungen auf der sekundären y-Achse
ax_pm.axis["right"].major_ticklabels.set_visible(False)

## Festlegen der Graphengrenzen
ax_kms.set_xlim(950, 3700)
ax_kms.set_ylim(950, 3100)

Den Graphen anzeigen

Schließlich werden wir den Graphen mit der Funktion plt.show() anzeigen.

plt.show()

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie man mit Matplotlib einen Graphen mit zwei y-Achsen erstellt. Sie haben gelernt, wie man die Daten definiert, den Graphen erstellt und den Graphen anzeigt. Dieser Art von Graphen ist nützlich, um Beziehungen zwischen Variablen zu visualisieren, die nicht direkt vergleichbar sind.