Imposta il colore per il grafico a dispersione in Matplotlib

Suraj Joshi 30 marzo 2021
Imposta il colore per il grafico a dispersione in Matplotlib

Per impostare il colore dei marker in Matplotlib, impostiamo il parametro c nel metodo matplotlib.pyplot.scatter().

Imposta il colore di un marker nel grafico a dispersione

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()

Produzione:

Imposta il colore del marker nel grafico a dispersione

Qui, impostiamo il colore di tutti i marker nei grafici a dispersione sul rosso impostando c="red" nel metodo scatter().

Se abbiamo due diversi set di dati, possiamo usare colori diversi per ogni set di dati utilizzando i diversi valori del parametro c.

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()

Produzione:

Imposta un colore diverso per ogni set di dati nel grafico a dispersione

Qui, il set di dati y1 è rappresentato nel grafico a dispersione dal colore rosso mentre il set di dati y2 è rappresentato nel grafico a dispersione dal colore verde.

Sarà difficile assegnare manualmente il colore ogni volta a ciascun set di dati se è presente un numero enorme di set di dati. In questi casi, possiamo usare colormap per generare i colori per ogni set di dati.

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()

Produzione:

Imposta automaticamente un colore diverso per ogni set di dati

Genera colori diversi per ogni riga nella matrice y e traccia ogni riga con un colore diverso.

Invece di usare la mappa dei colori generata, possiamo anche specificare i colori da usare per i grafici a dispersione in una lista e passare l’lista al metodo itertools.cycle() per creare un ciclatore di colori personalizzato. Per iterare sul colore, usiamo la funzione next().

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()

Produzione:

Imposta automaticamente un colore diverso per ogni set di dati

Il metodo itertools.cycle() creerà una lista ciclico di colori dal set di colori dato, e ogni riga viene tracciata nel grafico a dispersione selezionando un colore dall’lista ciclico.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Matplotlib Scatter Plot

Articolo correlato - Matplotlib Color