web-dev-qa-db-fra.com

Comment convertir les valeurs de données en informations de couleur pour matplotlib?

J'utilise la classe matplotlib.patches.Polygon pour dessiner des polygones sur une carte. En fait, les informations sur les coordonnées des coins des polygones et une valeur de données à virgule flottante pour chaque "polygone" sont fournies. Maintenant, j'aimerais convertir ces valeurs de données (allant de 0 à 3e15) en informations de couleur afin de bien les visualiser. Quelle est la meilleure pratique pour le faire en Python?

Un extrait de mon code:

poly = Polygon( xy, facecolor=data, edgecolor='none')
plt.gca().add_patch(poly)
14
HyperCube

Dans le système de couleurs RVB, deux bits de données sont utilisés pour chaque couleur, rouge, vert et bleu. Cela signifie que chaque couleur est sur une échelle de 0 à 255. Le noir serait 00,00,00, tandis que le blanc serait 255,255,255. Matplotlib dispose de nombreuses cartes de couleurs prédéfinies que vous pouvez utiliser. Elles sont toutes normalisées à 255 et vont donc de 0 à 1. Il vous suffit donc de normaliser vos données. Vous pouvez ensuite sélectionner manuellement les couleurs dans une palette de couleurs, comme suit:

>>> import matplotlib.pyplot as plt

>>> Blues = plt.get_cmap('Blues')
>>> print Blues(0)
(0.9686274528503418, 0.9843137264251709, 1.0, 1.0)
>>> print Blues(0.5)
(0.41708574119736169, 0.68063054575639614, 0.83823145908467911, 1.0)
>>> print Blues(1.0)
(0.96555171293370867, 0.9823452528785257, 0.9990157632266774, 1.0)

Voici toutes les tables de couleurs prédéfinies . Si vous souhaitez créer vos propres cartes de couleurs, here est un bon exemple. Aussi here est un document d’IBM sur le choix judicieux des couleurs, que vous devriez envisager si vous utilisez la couleur pour visualiser les données.

23
Mr. Squig

Pour convertir une valeur allant de 0 à + infini en une valeur allant de 0.0 à 1.0

import matplotlib.pyplot as plt

price_change =  price_change ** 2 / (1 + price_change ** 2)
Blues = plt.get_cmap('Blues')
print Blues(price_change)

La liste complète des couleurs est disponible ici: http://matplotlib.org/users/colormaps.html

3

Je pense que ce que vous recherchez est un ColorMap. Voir le post suivant pour plus d'informations sur l'utilisation de celles fournies par matplotlib.

Utilisation de couleurs pour définir la couleur de la ligne dans matplotlib

Si vous voulez créer le vôtre, la page ci-dessous fournit un exemple intéressant.

http://code.activestate.com/recipes/52273-colormap-returns-an-rgb-Tuple-on-a-0-to-255-scale-/

1
juniper-