Färben von Streudiagrammen nach Spaltenwerten mit Pandas und Matplotlib
Matplotlib ist eine beliebte Python-Bibliothek zum Erstellen statischer, animierter und interaktiver Visualisierungen in Python. In diesem Artikel wird die Verwendung von Matplotlib zum Einfärben von Streudiagrammen basierend auf Werten in einer bestimmten Spalte eines Pandas DataFrame untersucht.
Importe und Daten
Zunächst importieren wir die erforderlichen Bibliotheken , einschließlich Matplotlib (als plt) und Pandas (als pd). Wir generieren außerdem einen Beispiel-DataFrame („df“) mit drei Spalten: „Höhe“, „Gewicht“ und „Geschlecht“.
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
np.random.seed(0)
N = 37
_genders = ["Female", "Male", "Non-binary", "No Response"]
df = pd.DataFrame({
"Height (cm)": np.random.uniform(low=130, high=200, size=N),
"Weight (kg)": np.random.uniform(low=30, high=100, size=N),
"Gender": np.random.choice(_genders, size=N),
})
Aktualisierung im August 2021
Seaborn hat neue Funktionen auf Figurenebene eingeführt, wie zum Beispiel seaborn.relplot in Version 0.11.0. Diese Funktionen werden gegenüber der direkten Verwendung von FacetGrid empfohlen.
sns.relplot(data=df, x="Weight (kg)", y="Height (cm)", hue="Gender", hue_order=_genders, aspect=1.61)
plt.show()
Alte Antwort (2015)
Wenn Sie Matplotlib direkt verwenden möchten, müssen Sie die Scatter-Funktion von Matplotlib den Kategorien eines Pandas DataFrame zuordnen . Gehen Sie dazu folgendermaßen vor:
def dfScatter(df, xcol='Height', ycol='Weight', catcol='Gender'):
fig, ax = plt.subplots()
categories = np.unique(df[catcol])
colors = np.linspace(0, 1, len(categories))
colordict = dict(zip(categories, colors))
df["Color"] = df[catcol].apply(lambda x: colordict[x])
ax.scatter(df[xcol], df[ycol], c=df.Color)
return fig
fig = dfScatter(df)
fig.savefig('fig1.png')
Indem Sie diese Schritte befolgen, können Sie mit Pandas und Matplotlib ganz einfach Streudiagramme basierend auf Spaltenwerten einfärben.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3