Voici un exemple
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()
Ici, vous définissez la couleur en fonction de l'index t
, qui n'est qu'un tableau de [1, 2, ..., 100]
.
Un exemple peut-être plus facile à comprendre est le plus simple
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()
Notez que le tableau que vous passez en tant que c
n'a pas besoin d'avoir un ordre ou un type particulier, c'est-à-dire qu'il n'a pas besoin d'être trié ou des entiers comme dans ces exemples. La routine de traçage mettra à l'échelle la palette de couleurs de telle sorte que les valeurs minimum / maximum dans c
correspondent au bas / haut de la palette de couleurs.
Couleurs
Vous pouvez modifier la palette de couleurs en ajoutant
import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)
L'importation matplotlib.cm
est facultative car vous pouvez également appeler des couleurs cmap="cmap_name"
. Il y a une page de référence de couleurs montrant à quoi chacun ressemble. Sachez également que vous pouvez inverser une palette de couleurs en l'appelant simplement cmap_name_r
. Alors non plus
plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
plt.scatter(x, y, c=t, cmap="cmap_name_r")
marchera. Des exemples sont "jet_r"
ou cm.plasma_r
. Voici un exemple avec la nouvelle 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()
Barres de couleurs
Vous pouvez ajouter une barre de couleurs en utilisant
plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()
Notez que si vous utilisez explicitement des figures et des sous-graphiques (par exemple fig, ax = plt.subplots()
ou ax = fig.add_subplot(111)
), l'ajout d'une barre de couleurs peut être un peu plus compliqué. De bons exemples peuvent être trouvés ici pour une seule barre de couleur de sous-tracé et ici pour 2 sous-graphiques, 1 barre de couleur .
plt.colorbar()
commande.cm.colormap_name
etcm.cmapname
non des variables réellesmatplotlib.cm
; c'est juste un pseudocm.jet
cm.veridis_r
cmap
ou lac
liste d'une courbe déjà tracée?Pour ajouter à la réponse de wflynny ci-dessus, vous pouvez trouver les couleurs disponibles ici
Exemple:
import matplotlib.cm as cm plt.scatter(x, y, c=t, cmap=cm.jet)
Ou bien,
plt.scatter(x, y, c=t, cmap='jet')
la source
Barre de couleurs de sous-tracé
Pour les sous-graphiques avec dispersion, vous pouvez tromper une barre de couleurs sur vos axes en construisant le «mappable» à l'aide d'une figure secondaire, puis en l'ajoutant à votre graphique d'origine.
Dans le prolongement de l'exemple ci-dessus:
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()
Notez que vous allez également générer une figure secondaire que vous pouvez ignorer.
la source