sexta-feira, 1 de maio de 2020

Gráficos de dispersão com cores personalizadas

Gráficos de dispersão com cores personalizadas


Assim como podemos personalizar as cores das retas no exercício anterior, podemos personalizar as cores dos pontos do nosso gráfico. É o que veremos a seguir.

Mãos a obra...

A função scatter disponibiliza duas opções para controlar as cores dos pontos através do seu parâmetro color: Uma cor para todos os pontos: se o valor passado para o parâmetro for uma cor valida, todos os pontos do gráfico vão ter a mesma cor. Uma cor diferente para cada ponto: também podemos criar cada ponto com uma cor especifica. Mas para fazer isso precisamos criar uma lista com cores matplotlib válidas.

Como fazer pontos com diferentes cores

Nesse primeiro exemplo vamos criar um conjunto de dados, A e B. Cada conjunto vai ser desenhado no gráfico com uma cor diferente. Por isso vamos chamar a função scatter duas vezes, uma para cada cor.
Exemplo
import matplotlib.pyplot as plt
from numpy.random import randn

a = randn(100, 2)
b = randn(100, 2)

plt.scatter(a[:,0], a[:,1], color = (.0, .10, 1.))
plt.scatter(b[:,0], b[:,1], color = (.0, .80, .2))

plt.show()
A execução do código acima deve resultar num gráfico parecido com esse:

Usando uma lista de cores

Para usar uma lista com cem cores, precisamos de cem coordenadas de pontos.
Nesse exemplo vamos fazer um gráfico com cem pontos aleatórios e uma lista de cores com cem cores aleatórias.
Exemplo
import matplotlib.pyplot as plt
from numpy.random import randn, rand

a = randn(100, 2)

lista_cor = rand(100, 3)

plt.scatter(a[:,0], a[:,1], color = lista_cor)

plt.show()
O resultado deve ser um gráfico parecido com esse:

Como o parâmetro color recebe os valores

O parâmetro color pode receber os valores isolados, como acontece no primeiro exemplo, e em listas, como acontece no segundo exemplo. Os valores passados podem ser tantos numéricos como strings (no caso de nomes de cores definidos).

Tem mais...

Se por algum motivo você precisar criar uma borda nos pontos, isso é possível com o parâmetro edgecolor.
O parâmetro edgecolor cria uma borda no ponto com a cor passada para o parâmetro. O valor passado para o parâmetro edgecolor segue o mesmo padrão do parâmetro color. Assim podemos usar cores triplas, quadruplas, com nomes definidos ou níveis de cinza.
Exemplo
import matplotlib.pyplot as plt
from numpy.random import randn, rand

a = randn(100, 2)

plt.scatter(a[:,0], a[:,1], color = '1.0', edgecolor = '0.0')

plt.show()
O exemplo acima deve resulta num gráfico parecido com esse:


Nesse exemplo, passamos o valor do parâmetro edgecolor em níveis de cinza. Mas você poderia usar outros modos para definir a cor da borda dos pontos.
Uma coisa importante de se notar é que o parâmetro edgecolor só existe na função scatter.

0 comentários:

Postar um comentário