Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kodiere ich Streudiagramme nach Spaltenwerten in Python farblich?

Wie kodiere ich Streudiagramme nach Spaltenwerten in Python farblich?

Barbara Streisand
Barbara StreisandOriginal
2024-10-19 14:47:02591Durchsuche

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 Seaborn Facettengitter. Es übernimmt 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 Farben zuweist zu Punkten basierend auf einer kategorialen Spalte:

<code class="python">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</code>

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:

<code class="python">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"]})</code>

Aufruf der dfScatter-Funktion mit dem Datenrahmen:

<code class="python">fig = dfScatter(df)
fig.savefig('color_coded_scatterplot.png')</code>

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

[Bild des nach Geschlecht gefärbten Streudiagramms]

Die erweiterten Funktionen von Seaborn und die Die benutzerdefinierte dfScatter-Funktion bietet flexible Optionen zum Hinzufügen von Farbcodierung zu Streudiagrammen in Python, wodurch die Datenvisualisierung informativer und visuell ansprechender wird.

Das obige ist der detaillierte Inhalt vonWie kodiere ich Streudiagramme nach Spaltenwerten in Python farblich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn