Plot für kategoriale Streudiagramme verwenden
In diesem Leitfaden möchten wir ein häufiges Problem beim Erstellen von Streudiagrammen in Python mit Pandas und ansprechen matplotlib. Konkret werden wir untersuchen, wie man bestimmte Symbole verschiedenen Kategorien innerhalb der Daten zuordnet.
Das Problem
Bei einem Pandas-DataFrame mit mehreren Spalten besteht das Ziel darin, einen zu erstellen ein Streudiagramm, in dem zwei Variablen entlang der x- und y-Achse aufgetragen werden, während eine dritte Spalte die Symbole bestimmt, die zur Darstellung der Datenpunkte verwendet werden.
Die Lösung: Verwendung von Plot
Während Scatter für diese Aufgabe verwendet werden kann, erfordert es numerische Werte für die Kategorien, was seine Wirksamkeit einschränkt. Ein besserer Ansatz besteht darin, die Plotfunktion für diskrete Kategorien zu verwenden.
Das folgende Codebeispiel zeigt, wie dieser Ansatz implementiert wird:
import matplotlib.pyplot as plt import numpy as np import pandas as pd np.random.seed(1974) # Generate Data num = 20 x, y = np.random.random((2, num)) labels = np.random.choice(['a', 'b', 'c'], num) df = pd.DataFrame(dict(x=x, y=y, label=labels)) groups = df.groupby('label') # Plot fig, ax = plt.subplots() ax.margins(0.05) for name, group in groups: ax.plot(group.x, group.y, marker='o', linestyle='', ms=12, label=name) ax.legend() plt.show()
Für ein optisch ansprechendes Ergebnis können Sie den Plot anpassen Verwenden des Matplotlib-Stils, der im Plotmodul von Pandas verfügbar ist:
plt.rcParams.update(pd.tools.plotting.mpl_stylesheet) colors = pd.tools.plotting._get_standard_colors(len(groups), color_type='random') # ... (the rest of the code remains the same)
Dadurch erhalten Sie ein Streudiagramm, in dem jede Kategorie durch eine bestimmte Farbe und ein bestimmtes Symbol dargestellt wird.
Das obige ist der detaillierte Inhalt vonWie erstelle ich kategoriale Streudiagramme mit unterschiedlichen Symbolen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!