On pourrait générer une barre de couleur verticale comme ça (simplifiée):
import matplotlib.pyplot as plt
import matplotlib as mpl
plt.figure()
c_ax=plt.subplot(111)
cb = mpl.colorbar.ColorbarBase(c_ax,orientation='vertical')
plt.savefig('my_colorbar.png')
Il en résulte quelque chose comme ça (tourné pour des raisons d'espace):
Est-il possible d'obtenir les étiquettes des tiques du côté opposé?
Vous pouvez changer la position des ticks en utilisant c_ax.yaxis.set_ticks_position()
Donc pour votre exemple:
import matplotlib.pyplot as plt
import matplotlib as mpl
plt.viridis()
fig=plt.figure()
c_ax=plt.subplot(199)
cb = mpl.colorbar.ColorbarBase(c_ax,orientation='vertical')
c_ax.yaxis.set_ticks_position('left')
plt.savefig('my_colorbar.png')
Notez que vous pouvez également déplacer l'étiquette de la barre de couleurs de la même manière:
c_ax.yaxis.set_label_position('left')
Et enfin, si vous avez une barre de couleur horizontale et que vous souhaitez déplacer les graduations et les étiquettes vers le haut, vous pouvez utiliser la fonction équivalente sur le xaxis
:
c_ax.xaxis.set_label_position('top')
c_ax.xaxis.set_ticks_position('top')
J'avais le même problème. Cette situation se produit probablement lorsque vous définissez explicitement les axes de la barre de couleurs. Dans ce cas, vous pouvez facilement spécifier de quel côté de ces axes vous obtenez les graduations et les étiquettes. Par exemple, si vous avez créé une image en utilisant imshow
fig = plt.figure()
ax = plt.subplot(1, 1, 1)
im = ax.imshow(data)
Vous pouvez définir l'axe de la barre de couleurs, dans cet exemple en utilisant inset_axes:
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
cbaxes = inset_axes(ax, width="7%", height="20%", loc=4)
puis ajoutez votre barre de couleur
cb = fig.colorbar(im, cax=cbaxes, ticks=[vmin, vmax], orientation='vertical')
puis contrôler la position des ticks, etc ...
cbaxes.yaxis.tick_left()