Scatterplots mit Legenden erstellen

Beginner

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

Einführung

Scatterplots werden verwendet, um die Beziehung zwischen zwei Variablen zu visualisieren. Ein Scatterplot mit einer Legende ist nützlich, wenn es in den Daten mehrere Gruppen gibt und wir sie im Plot voneinander unterscheiden möchten. In diesem Lab werden wir lernen, wie man in Python mit der Matplotlib-Bibliothek Scatterplots mit Legenden erstellt.

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 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.

Importieren der erforderlichen Bibliotheken

Wir beginnen mit dem Importieren der erforderlichen Bibliotheken, einschließlich NumPy und Matplotlib.

import matplotlib.pyplot as plt
import numpy as np

Erstellen eines Scatterplots mit mehreren Gruppen

Wir können einen Scatterplot mit mehreren Gruppen erstellen, indem wir durch jede Gruppe iterieren und für jede Gruppe einen Scatterplot erstellen. Wir legen die Farbe, die Größe und die Transparenz der Marker für jede Gruppe mithilfe der Parameter c, s und alpha fest. Wir legen auch den Parameter label auf den Gruppennamen fest, der in der Legende verwendet werden wird.

fig, ax = plt.subplots()
for color in ['tab:blue', 'tab:orange', 'tab:green']:
    n = 750
    x, y = np.random.rand(2, n)
    scale = 200.0 * np.random.rand(n)
    ax.scatter(x, y, c=color, s=scale, label=color,
               alpha=0.3, edgecolors='none')

ax.legend()
ax.grid(True)

plt.show()

Automatisches Erstellen der Legende

Wir können auch die Methode PathCollection.legend_elements verwenden, um automatisch eine Legende für einen Scatterplot zu erstellen. Diese Methode versucht, eine sinnvolle Anzahl von Legende-Einträgen zu bestimmen, die angezeigt werden sollen, und gibt ein Tupel aus Handles und Labels zurück.

N = 45
x, y = np.random.rand(2, N)
c = np.random.randint(1, 5, size=N)
s = np.random.randint(10, 220, size=N)

fig, ax = plt.subplots()

scatter = ax.scatter(x, y, c=c, s=s)

## erzeuge eine Legende mit den eindeutigen Farben aus dem Scatter
legend1 = ax.legend(*scatter.legend_elements(),
                    loc="lower left", title="Klassen")
ax.add_artist(legend1)

## erzeuge eine Legende mit einem Querschnitt von Größen aus dem Scatter
handles, labels = scatter.legend_elements(prop="sizes", alpha=0.6)
legend2 = ax.legend(handles, labels, loc="upper right", title="Größen")

plt.show()

Anpassen von Legende-Elementen

Wir können die Legende-Elemente weiter anpassen, indem wir zusätzliche Argumente in der Methode PathCollection.legend_elements verwenden. Beispielsweise können wir die Anzahl der zu erstellenden Legende-Einträge angeben und wie sie beschriftet werden sollen.

volume = np.random.rayleigh(27, size=40)
amount = np.random.poisson(10, size=40)
ranking = np.random.normal(size=40)
price = np.random.uniform(1, 10, size=40)

fig, ax = plt.subplots()

## Da der Preis zu klein ist, um als Größe für ``s`` verwendet zu werden,
## normalisieren wir ihn auf einige sinnvolle Punktgrößen, s=0.3*(price*3)**2
scatter = ax.scatter(volume, amount, c=ranking, s=0.3*(price*3)**2,
                     vmin=-3, vmax=3, cmap="Spectral")

## Erzeuge eine Legende für die Rangfolge (Farben). Auch wenn es 40 verschiedene
## Rangfolgen gibt, möchten wir nur 5 von ihnen in der Legende anzeigen.
legend1 = ax.legend(*scatter.legend_elements(num=5),
                    loc="upper left", title="Rangfolge")
ax.add_artist(legend1)

## Erzeuge eine Legende für den Preis (Größen). Da wir die Preise
## in Dollar anzeigen möchten, verwenden wir das *func*-Argument, um die Umkehrfunktion
## der Funktion bereitzustellen, die oben verwendet wurde, um die Größen zu berechnen.
## Das *fmt* stellt sicher, dass der Preis in Dollar angezeigt wird. Beachten Sie,
## wie wir hier auf 5 Elemente zielen, erhalten jedoch nur 4 in der erstellten
## Legende aufgrund der automatisch gerundeten Preise, die für uns gewählt werden.
kw = dict(prop="sizes", num=5, color=scatter.cmap(0.7), fmt="$ {x:.2f}",
          func=lambda s: np.sqrt(s/.3)/3)
legend2 = ax.legend(*scatter.legend_elements(**kw),
                    loc="lower right", title="Preis")

plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man in Python mit der Matplotlib-Bibliothek Scatterplots mit Legenden erstellt. Wir haben Scatterplots mit mehreren Gruppen erstellt und die automatische Legendenerstellung durchgeführt. Wir haben auch die Legende-Elemente mithilfe der Methode PathCollection.legend_elements angepasst. Scatterplots mit Legenden sind nützlich, um die Beziehung zwischen zwei Variablen mit mehreren Gruppen zu visualisieren.