Ändere x-Achsen-Skala in Matplotlib

Ich habe diese Handlung mit Matlab erstellt

Bildbeschreibung hier eingeben

Mit matplotlib, die x-axies zieht große zahlen wie 100000, 200000, 300000. Ich möchte so etwas wie 1, 2, 3 und ein 10 ^ 5 zu zeigen, dass es tatsächlich 100000, 200000, 300000.

Gibt es einen einfachen Weg, um eine solche Skala in Matplotlib zu schaffen?

4 Solutions collect form web for “Ändere x-Achsen-Skala in Matplotlib”

Versuchen Sie es mit matplotlib.pyplot.ticklabel_format :

 import matplotlib.pyplot as plt ... plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0)) 

Dies gilt wissenschaftliche Notation (dh ax 10^b ) zu Ihren x-Achsen-Tickmarks

Der skalare Formatierer unterstützt das Sammeln der Exponenten. Die docs sind wie folgt:

Klasse matplotlib.ticker.ScalarFormatter (useOffset = True, useMathText = False, useLocale = Keine) Bases: matplotlib.ticker.Formatter

Tick ​​Location ist eine einfache alte Nummer. Wenn useOffset == True und der Datenbereich viel kleiner als der Datenwert ist, wird ein Offset so bestimmt, dass die Tick-Labels sinnvoll sind. Die wissenschaftliche Notation wird für Daten <10 ^ -n oder Daten> = 10 ^ m verwendet, wobei n und m die mit set_powerlimits ((n, m)) eingestellten Leistungsgrenzen sind. Die Vorgaben für diese werden durch den Parameter axes.formatter.limits rc gesteuert.

Ihre Technik wäre:

 xfmt = ScalarFormatter() xfmt.set_powerlimits((-3,3)) # Or whatever your limits are . . . {{ Make your plot }} gca().xaxis.set_major_formatter(xfmt) 

Um den Exponenten im Format x10^5 , instanziiere die ScalarFormatter mit useMathText=True .

Nach Bild

Du könntest auch:

 xfmt.set_useOffset(10000) 

Um so ein Ergebnis zu erzielen:

Bildbeschreibung hier eingeben

Ich finde die einfache Lösung

 pylab.ticklabel_format(axis='y',style='sci',scilimits=(1,4)) 

Dies ist nicht so eine Antwort auf Ihre ursprüngliche Frage wie eine der Fragen, die Sie im Körper Ihrer Frage hatten.

Eine kleine Präambel, so dass meine Namensgebung nicht seltsam erscheint:

 import matplotlib from matplotlib import rc from matplotlib.figure import Figure ax = self.figure.add_subplot( 111 ) 

Wie bereits erwähnt, können Sie ticklabel_format verwenden, um anzugeben, dass matplotlib wissenschaftliche Notation für große oder kleine Werte verwenden sollte:

 ax.ticklabel_format(style='sci',scilimits=(-3,4),axis='both') 

Sie können die Art und Weise beeinflussen, wie diese mit den Flags in rcParams (von matplotlib import rcParams) angezeigt wird, oder indem Sie sie direkt setzen. Ich habe keinen eleganteren Weg gefunden, zwischen "1e" und "x10 ^" wissenschaftlicher Notation zu wechseln als:

 ax.xaxis.major.formatter._useMathText = True 

Das soll dir noch mehr Matlab-esc geben, und zwar ein wahrhaft besseres Aussehen. Ich denke, das folgende sollte das gleiche tun:

 rc('text', usetex=True) 
  • Matplotlib funktioniert nach erfolgreicher Installation auf Mountain Lion nicht
  • Matplotlib Scatter Plot Legende
  • Matplotlib Erstellen von 2D Arrays aus 1D Arrays - gibt es einen schöneren Weg?
  • AttributeError: 'Figur' Objekt hat kein Attribut 'Plot'
  • Histogramm mit gestapelten Komponenten
  • Wie benutzt man den Befehl matshow, um Wärmekarte zu erzeugen?
  • Wie gebe ich mehrere X- oder Y-Achsen in Matplotlib?
  • Matplotlib-Animationen - wie man sie in ein Format exportiert, um sie in einer Präsentation zu verwenden?
  • Anpassung einer Normalverteilung an 1D-Daten
  • Mongodb Datenstatistik Visualisierung mit Matplotlib
  • Verschieben Sie Patch, anstatt es zu entfernen
  • Python ist die beste Programmiersprache der Welt.