J'ai une figure matplotlib dans laquelle je trace des données qui sont toujours désignées par des nanosecondes (1e-9). Sur l'axe des y, si j'ai des données qui sont des dizaines de nanosecondes, c'est-à-dire 44e-9, la valeur sur l'axe est 4,4 avec un décalage de +1e-8. Existe-t-il un moyen de forcer l'axe à afficher 44 avec un décalage de +1e-9 ?
Il en va de même pour mon axe des abscisses, qui affiche +5.54478e4, alors que je préférerais qu'il affiche un décalage de +55447 (nombre entier, sans décimale - la valeur est ici exprimée en jours).
J'ai essayé plusieurs choses comme ça :
p = axes.plot(x,y)
p.ticklabel_format(style='plain')
pour l'axe des x, mais cela ne fonctionne pas, bien que je l'utilise probablement de manière incorrecte ou que j'interprète mal quelque chose dans la documentation, quelqu'un peut-il m'indiquer la bonne direction ?
Merci, Jonathan
J'ai essayé de faire quelque chose avec les formateurs mais je n'ai pas encore trouvé de solution... :
myyfmt = ScalarFormatter(useOffset=True)
myyfmt._set_offset(1e9)
axes.get_yaxis().set_major_formatter(myyfmt)
y
myxfmt = ScalarFormatter(useOffset=True)
myxfmt.set_portlimits((-9,5))
axes.get_xaxis().set_major_formatter(myxfmt)
Par ailleurs, je ne sais pas vraiment où se trouve l'objet "numéro d'offset"... fait-il partie des ticks majeurs et mineurs ?
1 votes
Avez-vous essayé
set_units
? matplotlib.sourceforge.net/api/ (Je ne peux pas l'essayer car je n'ai pas matplotlib ici).1 votes
J'ai vérifié la fonction set_units et cela semble bien plus compliqué que nécessaire (il faut écrire/ajouté un module supplémentaire??-basic_units ?). Il doit y avoir un moyen de modifier simplement le format du tick. La fonction units / set_unit semble être plus proche de la conversion d'unités. Merci pour le conseil, il m'a conduit à d'autres solutions que j'étudie maintenant !
1 votes
Veuillez considérer
rcParams
pour le désactiver par défaut :rcParams["axes.formatter.useoffset"] = False
comme ici : stackoverflow.com/questions/24171064/