Não há necessidade de definir manualmente as cores. Em vez disso, especifique um mapa de cores em escala de cinza ...
import numpy as np
import matplotlib.pyplot as plt
# Generate data...
x = np.random.random(10)
y = np.random.random(10)
# Plot...
plt.scatter(x, y, c=y, s=500)
plt.gray()
plt.show()
Ou, se você preferir uma gama mais ampla de mapas de cores , também pode especificar o cmap
kwarg para scatter
. Para usar a versão reversa de qualquer um deles, basta especificar a " _r
" versão de qualquer um deles. Por exemplo, em gray_r
vez de gray
. Existem vários mapas de cores diferentes tons de cinza pré-fabricados (por exemplo gray
, gist_yarg
, binary
, etc.).
import matplotlib.pyplot as plt
import numpy as np
# Generate data...
x = np.random.random(10)
y = np.random.random(10)
plt.scatter(x, y, c=y, s=500, cmap='gray')
plt.show()
mpl.cm
também está disponível diretamente comoplt.cm
.plt.contour()
ouplt.contourf()
- mas isso é uma questão diferenteNo matplotlib, as cores cinza podem ser fornecidas como uma sequência de um valor numérico entre 0-1.
Por exemplo
c = '0.1'
Depois, você pode converter sua terceira variável em um valor dentro desse intervalo e usá-la para colorir seus pontos.
No exemplo a seguir, usei a posição y do ponto como o valor que determina a cor:
fonte
c
argumento, com valores alfa na quarta coluna. Se a terceira variável for Z, comshape=(n,1)
, entãocolors = numpy.hstack((numpy.zeros_like(z), numpy.zeros_like(z), numpy.ones_like(z), z/z.max()))
produz um efeito muito agradável (é claro que pode ser ajustado).plt.colorbar()
vai fazer issoÀs vezes, pode ser necessário plotar cores com precisão, com base no caso de valor x . Por exemplo, você pode ter um quadro de dados com 3 tipos de variáveis e alguns pontos de dados. E você quer fazer o seguinte,
Nesse caso, pode ser necessário gravar na função abreviada para mapear os valores x para os nomes de cores correspondentes como uma lista e depois passar essa lista para o
plt.scatter
comando.fonte