J'ai créé cette parcelle en utilisant Matlab
En utilisant matplotlib, x-axies dessine de grands nombres tels que 100000, 200000, 300000. J'aimerais avoir quelque chose comme 1, 2, 3 et un 10 ^ 5 pour indiquer qu’il s’agit en réalité de 100000, 200000, 300000.
Existe-t-il un moyen simple de créer une telle échelle dans matplotlib?
Essayez d'utiliser matplotlib.pyplot.ticklabel_format
:
import matplotlib.pyplot as plt
...
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
Ceci s'applique à la notation scientifique (c'est-à-dire a x 10^b
) à vos graduations sur l'axe des x
Ce n'est pas tant une réponse à votre question initiale qu'à l'une des questions que vous aviez dans le corps de votre question.
Un petit préambule, pour que mon nom ne paraisse pas étrange:
import matplotlib
from matplotlib import rc
from matplotlib.figure import Figure
ax = self.figure.add_subplot( 111 )
Comme cela a été mentionné, vous pouvez utiliser ticklabel_format pour spécifier que matplotlib doit utiliser la notation scientifique pour les grandes ou les petites valeurs:
ax.ticklabel_format(style='sci',scilimits=(-3,4),axis='both')
Vous pouvez modifier son affichage à l'aide des indicateurs de rcParams (provenant de matplotlib import rcParams) ou en les définissant directement. Je n'ai pas trouvé de moyen plus élégant de passer de la notation scientifique '1e' à 'x10 ^' par rapport à:
ax.xaxis.major.formatter._useMathText = True
Cela devrait vous donner plus de Matlab-esc, et même une meilleure apparence. Je pense que ce qui suit devrait faire la même chose:
rc('text', usetex=True)
Le formateur scalaire prend en charge la collecte des exposants. Les documents sont les suivants:
classe matplotlib.ticker.ScalarFormatter (useOffset = True, useMathText = False, useLocale = None) Bases: matplotlib.ticker.Formatter
Emplacement de la tique est un ancien numéro plaine. Si useOffset == True et que la plage de données est beaucoup plus petite que la moyenne des données, un décalage sera déterminé de manière à ce que les libellés de coches soient significatifs. La notation scientifique est utilisée pour les données <10 ^ -n ou les données> = 10 ^ m, où n et m sont les limites de puissance définies à l'aide de set_powerlimits ((n, m)). Les valeurs par défaut de celles-ci sont contrôlées par le paramètre rc axes.formatter.limits.
votre technique serait:
xfmt = ScalarFormatter()
xfmt.set_powerlimits((-3,3)) # Or whatever your limits are . . .
{{ Make your plot }}
gca().xaxis.set_major_formatter(xfmt)
Pour que l'exposant soit affiché au format x10^5
, instanciez le ScalarFormatter avec useMathText=True
.
Vous pouvez aussi utiliser:
xfmt.set_useOffset(10000)
Pour obtenir un résultat comme celui-ci:
Je trouve la solution simple
pylab.ticklabel_format(axis='y',style='sci',scilimits=(1,4))