web-dev-qa-db-fra.com

Barre de couleurs de notation scientifique dans matplotlib

J'essaie de mettre une barre de couleur sur mon image en utilisant matplotlib. Le problème survient lorsque j'essaie de forcer les étiquettes à écrire en notation scientifique. Comment puis-je forcer la notation scientifique (c.-à-d. 1x10 ^ 0, 2x10 ^ 0, ..., 1x10 ^ 2, etc.) dans les graduations de la barre de couleur?

Exemple, créons et traçons et imageons avec sa barre de couleur:

import matplotlib as plot
import numpy as np

img = np.random.randn(300,300)
myplot = plt.imshow(img)
plt.colorbar(myplot)
plt.show()

Lorsque je fais cela, j'obtiens l'image suivante:

image created with the previous code

Cependant, je voudrais voir les ticklabels en notation scientifique ... Y a-t-il une commande d'une ligne pour ce faire? Sinon, y a-t-il un indice? Merci!

25
Alejandro

Vous pouvez utiliser colorbar paramètre format :

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.ticker as ticker

img = np.random.randn(300,300)
myplot = plt.imshow(img)

def fmt(x, pos):
    a, b = '{:.2e}'.format(x).split('e')
    b = int(b)
    return r'${} \times 10^{{{}}}$'.format(a, b)

plt.colorbar(myplot, format=ticker.FuncFormatter(fmt))
plt.show()

enter image description here

37
unutbu

Vous pouvez spécifier le format des graduations de la barre de couleur comme suit:

pl.colorbar(myplot, format='%.0e')
26
Falko