Farbe für Scatterplot in Matplotlib festlegen

Suraj Joshi 27 November 2020
Farbe für Scatterplot in Matplotlib festlegen

Um die Farbe der Marker in der Matplotlib zu setzen, setzen wir den c Parameter in der matplotlib.pyplot.scatter() Methode.

Setzen der Farbe eines Markers in der Scatterplot

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7]
y = [2, 1, 4, 7, 4, 3, 2]

plt.scatter(x, y, c="red")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Simple Scatter Plot")
plt.show()

Ausgabe:

Setzen der Farbe der Markierung im Streudiagramm

Hier setzen wir die Farbe aller Marker in den Scatterplots auf rot, indem wir c="red" in der scatter() Methode setzen.

Wenn wir zwei verschiedene Datensätze haben, können wir für jeden Datensatz unterschiedliche Farben verwenden, indem wir die verschiedenen Werte des Parameters c verwenden.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7]
y1 = [2, 1, 4, 7, 4, 3, 2]
y2 = [4, 4, 5, 3, 8, 9, 6]

plt.scatter(x, y1, c="red")
plt.scatter(x, y2, c="green")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Scatter Plot of two different datasets")
plt.show()

Ausgabe:

Unterschiedliche Farbe für jeden Datensatz in Scatterplot einstellen

Hier wird der Datensatz y1 im Streudiagramm durch die rote Farbe dargestellt, während der Datensatz y2 im Streudiagramm durch die grüne Farbe repräsentiert wird.

Bei einer großen Anzahl von Datensätzen wird es schwierig sein, jedem Datensatz jedes Mal manuell eine Farbe zuzuweisen. In solchen Fällen können wir colormap verwenden, um die Farben für jeden Datensatz zu erzeugen.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

x = np.array([1, 2, 3, 4, 5])
y = np.random.random((10, 5))

colors = cm.rainbow(np.linspace(0, 1, y.shape[0]))
for dataset, color in zip(y, colors):
    plt.scatter(x, dataset, color=color)

plt.xlabel("X")
plt.ylabel("Y")
plt.show()

Ausgabe:

Automatisch unterschiedliche Farben für jeden Datensatz einstellen

Es erzeugt verschiedene Farben für jede Zeile in der Matrix y und zeichnet jede Zeile mit einer anderen Farbe auf.

Anstatt die erzeugte Farbkarte zu verwenden, können wir auch Farben angeben, die für Streudiagramme in einer Liste verwendet werden sollen, und die Liste an die Methode itertools.cycle() übergeben, um einen benutzerdefinierten Farb-Cycler zu erstellen. Um über die Farbe zu iterieren, verwenden wir die next() Funktion.

import itertools
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

x = np.array([1, 2, 3, 4, 5])
y = np.random.random((10, 5))

color_cycle = itertools.cycle(
    ["orange", "pink", "blue", "brown", "red", "grey", "yellow", "green"]
)

for row in y:
    plt.scatter(x, row, color=next(color_cycle))

plt.xlabel("X")
plt.ylabel("Y")
plt.show()

Ausgabe:

Automatisch unterschiedliche Farbe für jeden Datensatz einstellen

Die Methode itertools.cycle() erstellt eine zyklische Farbliste aus dem gegebenen Farbsatz, und jede Zeile wird im Streudiagramm dargestellt, wobei eine Farbe aus der zyklischen Liste ausgewählt wird.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Matplotlib Scatter Plot

Verwandter Artikel - Matplotlib Color