„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kodiere ich Streudiagramme nach Spaltenwerten in Python farblich?

Wie kodiere ich Streudiagramme nach Spaltenwerten in Python farblich?

Veröffentlicht am 09.11.2024
Durchsuche:307

How to Color-Code Scatter Plots by Column Values in Python?

Farbcodierung von Streudiagrammen nach Spaltenwerten in Python

Bei der Datenvisualisierung kann die Zuweisung von Farben zu verschiedenen Kategorien die Klarheit verbessern und Muster erkennen lassen. Diese Funktionalität ist in ggplot2 für R leicht verfügbar, aber wie können wir dasselbe in Python mit Pandas und Matplotlib erreichen?

Update: Seaborn-Verbesserungen

Seit der ursprünglichen Antwort Seaborn hat sich zu einer leistungsstarken Bibliothek für die Erstellung informativer und optisch ansprechender Plots entwickelt. Die jüngsten Updates bieten praktische Funktionen zum Färben von Streudiagrammen basierend auf Spaltenwerten:

  • Verwendung von seaborn.relplot: Diese High-Level-Funktion kombiniert Aspekte von matplotlib.pyplot.scatter und denen von Seaborn Facettengitter. Es verarbeitet automatisch die Farbcodierung basierend auf angegebenen Farbton- und Ordnungsparametern.
  • Zuordnung von matplotlib.pyplot.scatter zu seaborn.FacetGrid: Ähnlich wie beim ursprünglichen Ansatz können Sie die Scatter-Funktion auf a abbilden FacetGrid und passen Sie Farben basierend auf dem Farbton an.

Original Pandas und Matplotlib Ansatz

Für diejenigen, die einen direkten Ansatz mit Matplotlib suchen, gibt es hier eine benutzerdefinierte Funktion, die Punkten basierend auf einer kategorialen Spalte Farben zuweist:

import matplotlib.pyplot as plt
import pandas as pd

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

Diese Funktion erstellt ein Farbwörterbuch aus eindeutigen Kategoriewerten und weist Datenpunkten entsprechende Farben zu. Das Streudiagramm wird dann mit farbcodierten Punkten generiert.

Beispiel

Verwendung des bereitgestellten Beispieldatenrahmens:

df = pd.DataFrame({'Height': np.append(np.random.normal(6, 0.25, size=5), np.random.normal(5.4, 0.25, size=5)),
                   'Weight': np.append(np.random.normal(180, 20, size=5), np.random.normal(140, 20, size=5)),
                   'Gender': ["Male", "Male", "Male", "Male", "Male",
                              "Female", "Female", "Female", "Female", "Female"]})

Aufruf der dfScatter-Funktion mit dem Datenrahmen:

fig = dfScatter(df)
fig.savefig('color_coded_scatterplot.png')

Erzeugt ein Streudiagramm, in dem Punkte nach Geschlecht gefärbt sind:

[Bild des nach Geschlecht gefärbten Streudiagramms]

Seaborn's Advanced Funktionen und die benutzerdefinierte dfScatter-Funktion bieten flexible Optionen zum Hinzufügen von Farbcodierung zu Streudiagrammen in Python, wodurch die Datenvisualisierung informativer und visueller wird fesselnd.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729320380 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

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