Matplotlib: Spécifier le format des flotteurs pour les tiques etiquettes
Je suis en train de définir le format de deux nombres décimaux dans un matplotlib intrigue secondaire de l'environnement. Malheureusement, je n'ai aucune idée de comment résoudre cette tâche.
Pour éviter à l'aide de la notation scientifique sur l'axe des y, j'ai utilisé ScalarFormatter(useOffset=False)
comme vous pouvez le voir dans mon extrait de code ci-dessous. Je pense que ma tâche devrait être résolu par le passage d'autres options/arguments utilisés formateur. Cependant, je ne pouvais pas trouver le moindre indice dans matplotlib de la documentation.
Comment puis-je mettre deux chiffres après la virgule, ou none (les deux cas sont nécessaires)? Je ne suis pas en mesure de fournir des données de l'échantillon, malheureusement.
-- EXTRAIT --
f, axarr = plt.subplots(3, sharex=True)
data = conv_air
x = range(0, len(data))
axarr[0].scatter(x, data)
axarr[0].set_ylabel('$T_\mathrm{air,2,2}$', size=FONT_SIZE)
axarr[0].yaxis.set_major_locator(MaxNLocator(5))
axarr[0].yaxis.set_major_formatter(ScalarFormatter(useOffset=False))
axarr[0].tick_params(direction='out', labelsize=FONT_SIZE)
axarr[0].grid(which='major', alpha=0.5)
axarr[0].grid(which='minor', alpha=0.2)
data = conv_dryer
x = range(0, len(data))
axarr[1].scatter(x, data)
axarr[1].set_ylabel('$T_\mathrm{dryer,2,2}$', size=FONT_SIZE)
axarr[1].yaxis.set_major_locator(MaxNLocator(5))
axarr[1].yaxis.set_major_formatter(ScalarFormatter(useOffset=False))
axarr[1].tick_params(direction='out', labelsize=FONT_SIZE)
axarr[1].grid(which='major', alpha=0.5)
axarr[1].grid(which='minor', alpha=0.2)
data = conv_lambda
x = range(0, len(data))
axarr[2].scatter(x, data)
axarr[2].set_xlabel('Iterationsschritte', size=FONT_SIZE)
axarr[2].xaxis.set_major_locator(MaxNLocator(integer=True))
axarr[2].set_ylabel('$\lambda$', size=FONT_SIZE)
axarr[2].yaxis.set_major_formatter(ScalarFormatter(useOffset=False))
axarr[2].yaxis.set_major_locator(MaxNLocator(5))
axarr[2].tick_params(direction='out', labelsize=FONT_SIZE)
axarr[2].grid(which='major', alpha=0.5)
axarr[2].grid(which='minor', alpha=0.2)
Vous devez vous connecter pour publier un commentaire.
Voir la documentation pertinente dans général et plus précisément
.format()
style de prescripteurs, vous pouvez utiliser leStrMethodFormatter
mentionné sur la lienimshow
et cela ne fonctionne pas pour moi. J'ai aussi essayé deplt.gca().yaxis.set_major_formatter(FormatStrFormatter('%.g'))
à partir de cette réponse mais en vain. Des idées?.2f
mais l'original des tiques j'aimerais.1f
.subplots
sans argument. Est-ce à dire qu'il est additionnel à l'subplots(3)
que l'interlocuteur a? Je suppose que non, mais si j'insère une parcelle de compter dans votre code j'obtiens un "AttributeError: 'numpy.ndarray' objet n'a pas d'attribut 'ordonnée'"La réponse ci-dessus est probablement la façon correcte de le faire, mais ne fonctionne pas pour moi.
Le hacky manière résolue pour moi a été la suivante:
[str(round(float(label), 2)) for label in labels if label!='']
ou vous allez avoir du mal avec étiquettes vides.Si vous êtes à travailler directement avec matplotlib est pyplot (plt) et si vous êtes plus familier avec le nouveau style de chaîne de format, vous pouvez essayer ceci:
De la la documentation:
Dans matplotlib 3.1, vous pouvez également utiliser ticklabel_format. Pour empêcher la notation scientifique sans décalages: