[PYTHON] Comment ajouter une barre de couleur dans le graphique à barres de matplotlib

introduction

Lors du traçage de barres avec matplotlib, l'objet Mappable n'est pas renvoyé, il n'est donc pas possible d'ajouter une barre de couleur.

>>> import matplotli.pyplot as plt
>>> plt.bar(0, 1)
<Container object of 1 artists>

Mais je veux ajouter une barre de couleur en quelque sorte! Alors je l'ai essayé.

0. Créer des données appropriées

Tout d'abord, créons des données appropriées. Ici, les données sont créées en supposant qu'un diagramme sera créé dans lequel des barres de hauteurs 1 à 3 sont empilées.

>>> import numpy as np
>>> dheight = np.random.choice([1, 2, 3], size=10)
>>> data = np.random.choice([1, 2, 3, 4, 5], size=dheight.size)
>>> print data
[1 1 1 4 5 2 1 2 2 4]

Cette fois, nous colorerons en fonction de la valeur de la variable appelée data créée ici.

Maintenant que nous avons créé les données appropriées, nous pouvons enfin commencer à dessiner.

1. Créez une fonction Normaliser

Tout d'abord, dans la barre de couleurs de matplotlib, les couleurs sont définies dans la palette de couleurs correspondant aux valeurs comprises entre 0 et 1. Par conséquent, si vous voulez peindre selon les valeurs 1 à 5 comme cette fois, vous avez besoin d'une fonction (comme un objet) pour la normalisation. Une classe appelée Normalize peut le créer.

>>> from matplotlib.colors import Normalize
>>> norm = Normalize(vmin=data.min(), vmax=data.max())
>>> print norm(1), norm(2), norm(3)
0.0 0.25 0.5

Comme vous pouvez le voir en entrant réellement une valeur, si vous donnez une valeur à cet objet appelé norm, il est normalisé de sorte que vmin est 0 et vmax est 1.

2. Création d'un objet mappable

Ensuite, créez un objet mappable. Cette fois, nous allons créer un mappable en fonction de jet, qui est la carte de couleurs par défaut de matplotlib.

>>> from matplotlib.cm import ScalarMappable, get_cmap
>>> cmap = get_cmap('jet')
>>> mappable = ScalarMappable(cmap=cmap, norm=norm)
>>> mappable._A = []

3. Tracez les données

Une fois que vous êtes prêt, vous pouvez réellement tracer les données.

>>> import matplotlib.pyplot as plt
>>> bottom = 0.
>>> for dh, v in zip(dheight, data):
...     plt.bar(0, dh, width=1, bottom=bottom, color=cmap(norm(v)))
...     bottom += dh
>>> cbar = plt.colorbar(mappable)

Puisque la donnée tracée cette fois est [1 1 1 4 5 2 1 2 2 4], si la couleur correspondant à cette valeur est dans la barre de couleur, la barre de couleur peut être dessinée sans aucun problème.

4. Étiquette

Enfin, attachez une étiquette et terminez. Cette fois, l'étiquette est attachée en divisant les données entre la valeur minimale et la valeur maximale en cinq parties.

>>> cbar = plt.colorbar(mappable)
>>> ticks = np.linspace(norm.vmin, norm.vmax, 5)
>>> cbar.set_ticks(ticks)
>>> cbar.ax.set_yticklabels([str(s) for s in ticks])
[<matplotlib.text.Text at 0x7f36ac9b01d0>,
 <matplotlib.text.Text at 0x7f36ac9bb850>,
 <matplotlib.text.Text at 0x7f36ac98e550>,
 <matplotlib.text.Text at 0x7f36ac98ec50>,
 <matplotlib.text.Text at 0x7f36ac996390>]

5. Terminé!

C'est la fin.

>>> plt.show()

index.png

En toute sécurité, la couleur correspondant à la valeur de [1 1 1 4 5 2 1 2 2 4] a été dessinée.

Page utile

Recommended Posts

Comment ajouter une barre de couleur dans le graphique à barres de matplotlib
Comment supprimer l'erreur d'affichage dans matplotlib
Ajouter le ratio cumulatif au graphique à barres de matplotlib
Comment changer la couleur de l'éditeur dans PyCharm
[Python] Comment dessiner un histogramme avec Matplotlib
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Graphique 2D dans matplotlib
Comment éliminer les caractères déformés dans l'image de sortie matplotlib
Comment ajouter des numéros de page à un fichier PDF (en Python)
Comment passer le paramètre backend de matplotlib avec une variable d'environnement
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
Bar plot empilable avec matplotlib
Comment développer en Python
Comment ajouter de nouvelles données (lignes droites et tracés) à l'aide de matplotlib
Comment tracer beaucoup de légendes en changeant la couleur du graphique en continu avec matplotlib
[Python] Comment faire PCA avec Python
Comment utiliser les classes dans Theano
Comment écrire sobrement avec des pandas
Comment collecter des images en Python
Comment changer la couleur du seul bouton pressé avec Tkinter
Ajouter le ratio cumulatif à l'histogramme matplotlib
Comment mettre à jour Spyder dans Anaconda
Comment utiliser SQLite en Python
Comment ajouter sudo lors de l'exécution du débogage
Comment exécuter matplotlib sur heroku
Comment convertir 0,5 en 1056964608 en un seul coup
Comment refléter CSS dans Django
Comment tuer des processus en vrac
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment changer le jeu de couleurs vim
Comment utiliser PubChem avec Python
Comment ajouter un volume AWS EBS
Comment exécuter du code TensorFlow 1.0 en 2.0
Couleur en continu avec le diagramme de dispersion matplotlib
Comment gérer le japonais avec Python
Comment se connecter à Docker + NGINX
Comment afficher les marques de légende en un avec le tracé Python 2D
Comment appeler PyTorch dans Julia
[Petite histoire] Comment enregistrer des graphiques matplotlib dans un lot avec Jupyter
Comment tracer les données de lumière visible d'une galaxie à l'aide de la base de données OpenNGC en python
Comment dessiner un graphique à barres qui résume plusieurs séries avec matplotlib
Comment utiliser les colonnes calculées dans CASTable
Comment afficher la barre de progression (tqdm)
[Introduction à Python] Comment utiliser la classe en Python?
Spécifiez la couleur dans la carte 2D matplotlib
Comment définir dynamiquement des variables en Python
Comment ajouter un package avec PyCharm
Comment faire R chartr () en Python
Comment dessiner un graphique avec Matplotlib
Comment convertir csv en tsv dans la CLI
Comment supprimer des sessions expirées dans Django
[Itertools.permutations] Comment créer une séquence en Python
Comment utiliser Google Test en langage C
Comment implémenter un sérialiseur imbriqué avec drf-flex-fields
Comment utiliser BigQuery en Python
Comment exécuter des commandes avec Jupyter Notebook
Comment faire 'git fetch --tags' dans GitPython
Comment afficher la table quatre-vingt-dix-neuf en python