Matplotlib Achsentransformationstechniken

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

Matplotlib ist eine Python-Bibliothek, die zur Datenvisualisierung verwendet wird. Es ermöglicht es Benutzern, eine Vielzahl von Diagrammen, Plots und Grafiken zu erstellen. Ein wichtiges Merkmal von Matplotlib ist seine Fähigkeit, Skalierungsumformungen auf Achsen anzuwenden. Dies bietet eine größere Flexibilität bei der Darstellung von Daten, insbesondere wenn es um sehr große oder sehr kleine Zahlen geht. In diesem Lab werden wir lernen, wie verschiedene Skalierungsumformungen auf Achsen mit Matplotlib angewendet werden.

VM-Tipps

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der 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 und Daten generieren

Zunächst müssen wir die erforderlichen Bibliotheken importieren und einige Daten generieren, um sie zu plotten. In diesem Beispiel werden wir eine Normalverteilung verwenden, um Daten für die y-Achse zu generieren.

import matplotlib.pyplot as plt
import numpy as np

## Fixing random state for reproducibility
np.random.seed(19680801)

## make up some data in the interval ]0, 1[
y = np.random.normal(loc=0.5, scale=0.4, size=1000)
y = y[(y > 0) & (y < 1)]
y.sort()
x = np.arange(len(y))

Erstellen eines Plots mit linearer Skala

Die erste Art von Skalierungsumformung, die wir untersuchen werden, ist die lineare Skala. Dies ist die Standardskala, die in Matplotlib verwendet wird. Um einen Plot mit linearer Skala zu erstellen, verwenden wir die Methode set_yscale() und übergeben den String 'linear'. Wir fügen auch einen Titel und ein Gitter zum Plot hinzu.

## linear
plt.plot(x, y)
plt.yscale('linear')
plt.title('Linear Scale')
plt.grid(True)

Erstellen eines Plots mit logarithmischer Skala

Die nächste Art von Skalierungsumformung, die wir untersuchen werden, ist die logarithmische Skala. Um einen Plot mit logarithmischer Skala zu erstellen, verwenden wir die Methode set_yscale() und übergeben den String 'log'. Wir fügen auch einen Titel und ein Gitter zum Plot hinzu.

## log
plt.plot(x, y)
plt.yscale('log')
plt.title('Logarithmic Scale')
plt.grid(True)

Erstellen eines Plots mit symmetrischer logarithmischer Skala

Die dritte Art von Skalierungsumformung, die wir untersuchen werden, ist die symmetrische logarithmische Skala. Diese Skalierung ist nützlich, wenn es um Daten geht, die sowohl positive als auch negative Werte enthalten. Um einen Plot mit symmetrischer logarithmischer Skala zu erstellen, verwenden wir die Methode set_yscale() und übergeben den String 'symlog'. Wir setzen auch den Parameter linthresh auf 0,02, um den Bereich der Werte um Null anzugeben, die linear skaliert werden sollen. Wir fügen auch einen Titel und ein Gitter zum Plot hinzu.

## symmetric log
plt.plot(x, y - y.mean())
plt.yscale('symlog', linthresh=0.02)
plt.title('Symmetrical Logarithmic Scale')
plt.grid(True)

Erstellen eines Plots mit Logit-Skala

Die vierte Art von Skalierungsumformung, die wir untersuchen werden, ist die Logit-Skala. Diese Skalierung ist nützlich, wenn es um Daten geht, die zwischen 0 und 1 begrenzt sind. Um einen Plot mit Logit-Skala zu erstellen, verwenden wir die Methode set_yscale() und übergeben den String 'logit'. Wir fügen auch einen Titel und ein Gitter zum Plot hinzu.

## logit
plt.plot(x, y)
plt.yscale('logit')
plt.title('Logit Scale')
plt.grid(True)

Erstellen eines Plots mit benutzerdefinierter Skala

Die letzte Art von Skalierungsumformung, die wir untersuchen werden, ist die benutzerdefinierte Skala. Dies ermöglicht es uns, unsere eigenen Funktionen für die Vorwärts- und Rückwärtstransformation der Skalierung zu definieren. In diesem Beispiel werden wir eine benutzerdefinierte Funktion definieren, um die Quadratwurzel der Daten zu berechnen. Um einen Plot mit benutzerdefinierter Skala zu erstellen, verwenden wir die Methode set_yscale() und übergeben den String 'function'. Wir definieren auch die Funktionen forward() und inverse() und übergeben sie als Argumente an den Parameter functions. Wir fügen auch einen Titel und ein Gitter zum Plot hinzu.

## Funktion x**(1/2)
def forward(x):
    return x**(1/2)

def inverse(x):
    return x**2

plt.plot(x, y)
plt.yscale('function', functions=(forward, inverse))
plt.title('Custom Scale')
plt.grid(True)

Erstellen eines Plots mit Mercator-Transformationsskala

Als Bonus werden wir auch einen Plot erstellen, der die Mercator-Transformationsfunktion verwendet. Dies ist keine integrierte Funktion in Matplotlib, aber wir können unsere eigenen Vorwärts- und Rückwärtstransformationsfunktionen definieren, um einen Plot mit Mercator-Transformationsskala zu erstellen. In diesem Beispiel werden wir die forward()- und inverse()-Funktionen für die Mercator-Transformation definieren. Wir fügen auch einen Titel und ein Gitter zum Plot hinzu.

## Funktion Mercator-Transformation
def forward(a):
    a = np.deg2rad(a)
    return np.rad2deg(np.log(np.abs(np.tan(a) + 1.0 / np.cos(a))))

def inverse(a):
    a = np.deg2rad(a)
    return np.rad2deg(np.arctan(np.sinh(a)))

t = np.arange(0, 170.0, 0.1)
s = t / 2.

plt.plot(t, s, '-', lw=2)
plt.yscale('function', functions=(forward, inverse))
plt.title('Mercator Transform Scale')
plt.grid(True)
plt.xlim([0, 180])

Zusammenfassung

In diesem Lab haben wir gelernt, wie verschiedene Skalierungsumformungen auf Achsen mit Matplotlib angewendet werden. Wir haben lineare, logarithmische, symmetrisch logarithmische, Logit-, benutzerdefinierte und Mercator-Transformationsskalierungsumformungen untersucht. Indem wir diese Skalierungsumformungen anwenden, können wir Daten, die sehr große oder sehr kleine Zahlen enthalten, sowie Daten, die sowohl positive als auch negative Werte enthalten, besser visualisieren.