Matplotlib: So färben Sie ein Streudiagramm nach Wert

Von Fabian
Kategorie: Python
Tags: Matplotlib
Lesezeit: 3 Minuten

Oft möchten Sie möglicherweise die Farbe von Punkten innerhalb eines Matplotlib-Streudiagramms basierend auf einer dritten Variablen schattieren. Glücklicherweise ist dies mit der Funktion matplotlib.pyplot.scatter (), die die folgende Syntax annimmt, einfach zu bewerkstelligen:

matplotlib.pyplot.scatter(x, y, s=None, c=None, cmap=None)

wo:

  • x: Array von Werten, die für die Positionen der x-Achse im Diagramm verwendet werden sollen.
  • y: Array von Werten, die für die Positionen der y-Achse im Diagramm verwendet werden sollen.
  • s: Die Markergröße.
  • c: Array von Werten, die für Markierungsfarben verwendet werden sollen.
  • cmap: Eine Karte mit Farben, die im Plot verwendet werden sollen.

Sie können c verwenden, um eine Variable anzugeben, die für die Farbwerte verwendet werden soll, und Sie können cmap verwenden, um die tatsächlichen Farben anzugeben, die für die Markierungen im Streudiagramm verwendet werden sollen.

In diesem Tutorial werden einige Beispiele für die praktische Verwendung dieser Funktion erläutert.

Beispiel 1: Farbstreudiagrammpunkte nach Wert

Angenommen, wir haben die folgenden Pandas DataFrame:

import pandas as pd

#Dataframe erstellen
df = pd.DataFrame({'x': [25, 12, 15, 14, 19, 23, 25, 29],
                   'y': [5, 7, 7, 9, 12, 9, 9, 4],
                   'z': [3, 4, 4, 5, 7, 8, 8, 9]})

#Dataframe anzeigen
df

    x   y   z
0   25  5   3
1   12  7   4
2   15  7   4
3   14  9   5
4   19  12  7
5   23  9   8
6   25  9   8
7   29  4   9

Der folgende Code zeigt, wie Sie ein Streudiagramm mit einer grauen Farbkarte und den Werten für die Variable z als Schatten für die Farbkarte erstellen:

import matplotlib.pyplot as plt

# Streudiagramm erstellen
plt.scatter(df.x, df.y, s=200, c=df.z, cmap='gray')

Matplotlib-Streudiagrammfarbe nach Wert

Für dieses spezielle Beispiel haben wir die Farbkarte "grau" ausgewählt. Eine vollständige Liste der verfügbaren Farbthemen finden Sie in der Dokumentation zur Matplotlib-Farbkarte.

Zum Beispiel könnten wir stattdessen 'Grüne' als Farbkarte angeben:

plt.scatter(df.x, df.y, s=200, c=df.z, cmap='Greens')

Matplotlib-Streudiagramm mit cmap

Standardmäßig werden Markierungen mit größeren Werten für das Argument c dunkler schattiert. Sie können dies jedoch umkehren, indem Sie einfach _r an den cmap-Namen anhängen:

plt.scatter(df.x, df.y, s=200, c=df.z, cmap='Greens_r')

Matplotlib Colormap Reverse Scale

Beispiel 2: Farbstreudiagrammpunkte nach Kategorie

Angenommen, wir haben die folgenden Pandas DataFrame:

import pandas as pd

#Dataframe erstellen
df = pd.DataFrame({'x': [25, 12, 15, 14, 19, 23, 25, 29],
                   'y': [5, 7, 7, 9, 12, 9, 9, 4],
                   'z': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']})

#Dataframe anzeigen
df

    x   y   z
0   25  5   A
1   12  7   A
2   15  7   B
3   14  9   B
4   19  12  B
5   23  9   C
6   25  9   C
7   29  4   C

Der folgende Code zeigt, wie Sie ein Streudiagramm mit der Variablen z erstellen, um die Markierungen basierend auf der Kategorie einzufärben:

import matplotlib.pyplot as plt

groups = df.groupby('z')
for name, group in groups:
    plt.plot(group.x, group.y, marker='o', linestyle='', markersize=12, label=name)

plt.legend()

Matplotlib-Streudiagramm nach Kategorie gefärbt

Weitere Python-Tutorials finden Sie hier.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: