Aqui está um exemplo
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(100)
y = np.random.rand(100)
t = np.arange(100)
plt.scatter(x, y, c=t)
plt.show()
Aqui você está definindo a cor com base no índice,, t
que é apenas uma matriz de [1, 2, ..., 100]
.
Talvez um exemplo mais fácil de entender seja o ligeiramente mais simples
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
plt.scatter(x, y, c=t)
plt.show()
Observe que o array que você passou c
não precisa ter nenhuma ordem ou tipo específico, ou seja, não precisa ser classificado ou inteiro como nesses exemplos. A rotina de plotagem escalará o mapa de cores de forma que os valores mínimo / máximo c
correspondam à parte inferior / superior do mapa de cores.
Colormaps
Você pode alterar o mapa de cores adicionando
import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)
A importação matplotlib.cm
é opcional, pois você também pode chamar mapas de cores cmap="cmap_name"
. Há uma página de referência de mapas de cores mostrando a aparência de cada um. Saiba também que você pode reverter um mapa de cores simplesmente chamando-o de cmap_name_r
. Então também
plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
plt.scatter(x, y, c=t, cmap="cmap_name_r")
vai funcionar. Os exemplos são "jet_r"
ou cm.plasma_r
. Aqui está um exemplo com o novo 1.5 colormap viridis:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
plt.show()
Colorbars
Você pode adicionar uma barra de cores usando
plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()
Observe que se você estiver usando figuras e subtramas explicitamente (por exemplo, fig, ax = plt.subplots()
ou ax = fig.add_subplot(111)
), adicionar uma barra de cores pode ser um pouco mais complicado. Bons exemplos podem ser encontrados aqui para uma única barra de cores de subtramas e aqui para 2 subtramas 1 barra de cores .
plt.colorbar()
comando.cm.colormap_name
ecm.cmapname
nem das variáveis reais emmatplotlib.cm
; é apenas pseudocódigo paracm.jet
oucm.veridis_r
etc.c=np.arange(len(x))
.Para adicionar à resposta de wflynny acima, você pode encontrar os mapas de cores disponíveis aqui
Exemplo:
import matplotlib.cm as cm plt.scatter(x, y, c=t, cmap=cm.jet)
ou alternativamente,
plt.scatter(x, y, c=t, cmap='jet')
fonte
Subplot Colorbar
Para subtramas com dispersão, você pode enganar uma barra de cores em seus eixos construindo o "mapeável" com a ajuda de uma figura secundária e, em seguida, adicionando-a à sua trama original.
Como continuação do exemplo acima:
import numpy as np import matplotlib.pyplot as plt x = np.arange(10) y = x t = x fig, (ax1, ax2) = plt.subplots(1, 2) ax1.scatter(x, y, c=t, cmap='viridis') ax2.scatter(x, y, c=t, cmap='viridis_r') # Build your secondary mirror axes: fig2, (ax3, ax4) = plt.subplots(1, 2) # Build maps that parallel the color-coded data # NOTE 1: imshow requires a 2-D array as input # NOTE 2: You must use the same cmap tag as above for it match map1 = ax3.imshow(np.stack([t, t]),cmap='viridis') map2 = ax4.imshow(np.stack([t, t]),cmap='viridis_r') # Add your maps onto your original figure/axes fig.colorbar(map1, ax=ax1) fig.colorbar(map2, ax=ax2) plt.show()
Observe que você também produzirá uma figura secundária que pode ser ignorada.
fonte