Definir Cor para Scatterplot em Matplotlib

Suraj Joshi 6 fevereiro 2021
Definir Cor para Scatterplot em Matplotlib

Para definir a cor dos marcadores em Matplotlib, definimos o parâmetro c no método matplotlib.pyplot.scatter().

Definir a cor de um marcador no método 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()

Resultado:

Definir a cor do marcador em splatterplot

Aqui, definimos a cor de todos os marcadores nos scatterplots para vermelho, definindo c="red" no método scatter().

Se tivermos dois conjuntos de dados diferentes, podemos utilizar cores diferentes para cada conjunto de dados, utilizando os diferentes valores do parâmetro 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()

Resultado:

Definir cores diferentes para cada conjunto de dados em scatterplot

Aqui, o array de dados y1 é representado no gráfico de dispersão pela cor vermelha enquanto o array de dados y2 é representado no gráfico de dispersão pela cor verde.

Será difícil atribuir cor manualmente de cada vez a cada conjunto de dados se houver um grande número de conjuntos de dados. Nesses casos, podemos utilizar colormap para gerar as cores para cada conjunto de dados.

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

Resultado:

Definir automaticamente cores diferentes para cada conjunto de dados

Gera cores diferentes para cada linha do array y e traça cada linha com uma cor diferente.

Em vez de utilizar o mapa de cores gerado, podemos também especificar cores a serem utilizadas para gráficos de dispersão numa lista e passar a lista para o método itertools.cycle() para fazer um bucle de cores personalizado. Para iterar sobre a cor, utilizamos a função 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()

Resultado:

Definir automaticamente uma cor diferente para cada conjunto de dados

O método itertools.cycle() irá criar uma lista cíclica de cores do array de cores dado, e cada linha é traçada no gráfico de dispersão escolhendo uma cor da lista cíclica.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Matplotlib Scatter Plot

Artigo relacionado - Matplotlib Color