[Python] Ajustement de la barre de couleurs

Livre de vocabulaire. Réimprimer beaucoup car il est difficile de rechercher à chaque fois. Il existe une URL d'origine.

[matplotlib.pyplot.colorbar] (https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.colorbar.html) [Qiita @ skotaro: Une histoire dédiée à ceux qui l'ont découvert en disséquant la barre de couleurs de matplotlib, ou qui ne veulent plus avoir de problèmes pour ajuster la barre de couleurs] (https://qiita.com/skotaro/items/01d66a8c9902a766a2c0)

Ajuster la position: dessinez une barre de couleur sur les axes spécifiés

Spécifié par fig.add_axes

Spécifié avec l'option cax =.

fig = plt.figure(figsize=(8,5))
ax  = fig.add_axes((0.05, 0.15, 0.9, 0.8))
im  = ax.imshow(np.random.random((10, 20)), cmap='jet')
cax = fig.add_axes((0.05, 0.05, 0.9, 0.08))
plt.colorbar(im, orientation='horizontal', cax=cax)

image.png

Spécifié par make_axes_locatable

La façon de dessiner la barre de couleur est la même que ci-dessus, seule la façon de créer des axes est modifiée.

from mpl_toolkits.axes_grid1 import make_axes_locatable
divider = make_axes_locatable(ax)

#Faites de la place à droite
cax = divider.new_horizontal(size="2%", pad=0.05)
fig.add_axes(cax)
# OR
cax = divider.append_axes('right', '5%', pad='3%')

plt.colorbar(im, cax=cax)

Qiita @ termoshtt: Alignez la barre de couleurs sur la figure avec matplotlib

Cependant, si vous spécifiez la projection pour ax, cela ne fonctionne pas.

Qiita @ nishimuraatsushi: Alignez la taille de la barre de couleurs avec matplotlib

Dessiner la barre de couleur seule

plt.figure(figsize=(8, 0.5))
norm = mcolors.DivergingNorm(vcenter=0.0, vmin=-5, vmax=5)
im   = ax.imshow(np.array([[0,1]]), cmap='bwr', norm=norm)
plt.gca().set_visible(False)
cax = plt.axes([0.1, 0.2, 0.8, 0.6])
cb  = plt.colorbar(im, orientation='horizontal', cax=cax)

[stackoverflow: Standalone colorbar (matplotlib)] (https://stackoverflow.com/questions/16595138/standalone-colorbar-matplotlib)

Le code ci-dessus est dessiné une fois avec ʻimshow → puis définissez ʻAxes pour la barre de couleur, et ainsi de suite.

--Enregistrer cette barre de couleur seule → Modifier avec pptx etc. --Créez une fonction qui passe Axes pour dessiner une barre de couleur et une image (ʻim` dans le code ci-dessus) comme arguments.

Dans ce cas, cela suffit. Le dernier exemple:

def draw_coloarbar(ax, im):
    return plt.colorbar(im, orientation='horizontal', cax=ax)

fig  = plt.figure(figsize=(8, 4))
ax   = fig.add_axes((0.05, 0.05, 0.9, 0.9))
im   = ax.imshow(np.array(np.random.random((10, 20))), cmap='jet')
cax = fig.add_axes([0.1, 0.45, 0.8, 0.1])
draw_coloarbar(cax, im)

image.png

Cependant, dans une fonction qui ne passe pas une image comme argument = un ʻimshow` temporaire est requis

Lors de la création d'une fonction qui dessine uniquement la barre de couleur sur les ʻAxes spécifiés (après avoir fait un ʻimshow temporaire), la méthode de spécification de la position est différente:

def draw_coloarbar2(ax):
    norm = mcolors.DivergingNorm(vcenter=0.0, vmin=-5, vmax=5)
    im = ax.imshow(np.array([[0,1]]), cmap='bwr', norm=norm)
    ax.set_visible(False)
    return plt.colorbar(im, orientation='horizontal', #cax=ax) # cax=Si tel est le cas, la barre de couleur ne sera pas affichée
                        ax=ax, fraction=1.0)

fig  = plt.figure(figsize=(8, 4))
ax   = fig.add_axes((0.05, 0.05, 0.9, 0.9))
im   = ax.imshow(np.array(np.random.random((10, 20))), cmap='jet')
cax = fig.add_axes([0.1, 0.45, 0.8, 0.1])
draw_coloarbar2(cax)

image.png

Dans ce cas, il est nécessaire de spécifier la position avec ʻax = ʻau lieu decax =. La différence de signification de ces arguments est détaillée dans le lien en haut de la page. fraction = est un argument sur la quantité d'axes spécifiés à utiliser pour la barre de couleurs.

Réglage de la forme

Lors du changement d'épaisseur, ʻaspect = `

plt.colorbar(aspect=20) #mince
plt.colorbar(aspect=50) #épais

[stackoverflow: How to decrease colorbar WIDTH in matplotlib?] (https://stackoverflow.com/questions/33443334/how-to-decrease-colorbar-width-in-matplotlib)

Pour ajouter des triangles aux deux extrémités de la barre de couleur ʻextend = `

plt.colorbar(extend='both') #Triangle aux deux extrémités

Ajuster l'échelle

Utilisez cbar.set_ticks () pour la position de l'échelle et cbar.set_ticklabels () pour la chaîne de caractères de l'échelle.

[Page Web d'Akira Takeshima: Barre de couleurs] (http://hydro.iis.u-tokyo.ac.jp/~akira/page/python/contents/plot/general/colorbar.html) [matplotlib: pylab_examples example code: colorbar_tick_labelling_demo.py] (https://matplotlib.org/examples/pylab_examples/colorbar_tick_labelling_demo.html)

Obtenez l'échelle

Notez que la méthode d'appel diffère entre les ticks et les ticklabels.

ticks = cbar.get_ticks()
ticklabels = [ticklabel.get_text() for ticklabel in cbar.ax.get_xticklabels()]

Même quand je ne change que les ticklabels, je me fâche avec set_ticks () doit avoir été appelé. La même chose est spécifiée comme cbar.set_ticks (ticks)`.

Par exemple, si vous souhaitez ajouter une unité à la barre de couleurs:

#ce qui précède-5 à 5 barres de couleur comme cbar
ticks = cbar.get_ticks() # [-4. -2.  0.  2.  4.]
ticklabels = [ticklabel.get_text() for ticklabel in cbar.ax.get_xticklabels()]
# ['−4', '−2', '0', '2', '4']
ticklabels[-1] += ' [unit]'
cbar.set_ticks(ticks)
cbar.set_ticklabels(ticklabels)

image.png

Changer la taille de la police

cbar.ax.tick_params(labelsize=10)

[stackoverflow: Change fontsize of colorbars in matplotlib] (https://stackoverflow.com/questions/40184696/change-fontsize-of-colorbars-in-matplotlib)

Recommended Posts

[Python] Ajustement de la barre de couleurs
[Python] Ajuster la norme de la carte des couleurs
[Python] Une barre de progression sur le terminal
[Python] Obtenez la couleur principale de la capture d'écran
Créer une barre de couleurs avec Python + Qt (PySide)
Celui qui affiche la barre de progression en Python
le zen de Python
[Python] Fractionner la date
[ev3dev × Python] Capteur de couleur
Remplissez l'arrière-plan d'une seule couleur avec OpenCV2 + Python
[Python] Résumé de la façon de spécifier la couleur de la figure
python3 Mesurez la vitesse de traitement.
Vers la retraite de Python2
Trouver des erreurs en Python
Comparons les types de tableaux Python
À propos du module Python venv
[Python] Récupérez le mois précédent
Blender 2.9, Python, spécification de couleur hexadécimale
[Python 2/3] Analyser la chaîne de format
course de graphique à barres en python
Appelez l'API avec python3.
À propos des fonctionnalités de Python
[Python] Vérifiez les bibliothèques installées
J'ai téléchargé la source python
Le pouvoir des pandas: Python
Trouvez la valeur maximale python (amélioré)
L'extraction de couleur avec Python + OpenCV a résolu le mystère du fond vert
Laissez le traitement gênant à Python
[Python] Vérifiez le répertoire actuel, déplacez le répertoire
Extraire le fichier xz avec python
L'histoire de Python et l'histoire de NaN
Obtenir l'API arXiv en Python
Vérifiez le comportement lors de l'attribution de Python
[Python] Trouvez la deuxième plus petite valeur.
First Python 3 ~ Le début de la répétition ~
Colorez l'intervalle d'intégration avec matplotlib.pyplot
Python dans le navigateur: la recommandation de Brython
Enregistrez le fichier binaire en Python
AtCoder: Python: Papa, l'exemple de test.
Frappez l'API Sesami en Python
Essayez le SDK Python LINE Pay
[python] Horloge qui change de couleur (animation)
[Python] Accédez à l'API Google Translation
Obtenez le chemin du bureau en Python
Barre de progression en pop-up avec Python Kivy
[Python] Qu'est-ce que @? (À propos des décorateurs)
Existence du point de vue de Python
Obtenez la météo avec les requêtes Python
Obtenez la météo avec les requêtes Python 2
pyenv-changer la version python de virtualenv
Obtenez le chemin du script en Python
Dans la commande python, python pointe vers python3.8
Implémenter le modèle Singleton en Python
Comment obtenir la version Python
Trouvez la distance d'édition (distance de Levenshtein) avec python
[python] Quelle est la clé triée?
Accédez à l'API Etherpad-lite avec Python
Installer le plug-in Python avec Netbeans 8.0.2