Ich verwende Matplotlib in Python, um einfache xy-Datensätze zu zeichnen. Dies führt zu gut aussehenden Diagrammen. Wenn ich jedoch verschiedene Bereiche des gezeichneten Diagramms mithilfe der Abbildungansicht (die bei der Ausführung angezeigt wird plt.show()
) zu nahe heran zoome, ändern sich die Werte der x-Achse gegenüber der Standardnummernform (1050, 1060, 1070 usw.) in wissenschaftlicher Form mit Exponentialschreibweise (zB 1, 1,5, 2,0 mit der Bezeichnung x-Achse angegeben als +1.057e3
).
Ich würde es vorziehen, wenn meine Figuren die einfache Nummerierung der Achse beibehalten, anstatt die Exponentialform zu verwenden. Gibt es eine Möglichkeit, Matplotlib dazu zu zwingen?
python
graph
matplotlib
figure
IanRoberts
quelle
quelle
Antworten:
Die Formatierung von Häkchen wird von einem
Formatter
Objekt gesteuert. Vorausgesetzt, Sie haben nichts Besonderes getan, ist diesScalerFormatter
standardmäßig ein . Dieser Formatierer verwendet eine konstante Verschiebung, wenn die gebrochene Änderung der sichtbaren Werte sehr gering ist. Um dies zu vermeiden, schalten Sie es einfach aus:plt.plot(arange(0,100,10) + 1000, arange(0,100,10)) ax = plt.gca() ax.get_xaxis().get_major_formatter().set_useOffset(False) plt.draw()
Wenn Sie die wissenschaftliche Notation im Allgemeinen vermeiden möchten,
ax.get_xaxis().get_major_formatter().set_scientific(False)
Kann dies global über den
axes.formatter.useoffset
rcparam steuern.quelle
axes.formatter.useoffset
rcparamSie können einen einfacheren Befehl verwenden, um ihn auszuschalten:
plt.ticklabel_format(useOffset=False)
quelle
Sie können etwas verwenden wie:
from matplotlib.ticker import ScalarFormatter, FormatStrFormatter ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))
quelle
AttributeError: 'LogFormatterSciNotation' object has no attribute 'set_scientific'
Verwenden Sie den folgenden Befehl:
ax.ticklabel_format(useOffset=False, style='plain')
Wenn Sie eine Nebenhandlung verwenden, tritt möglicherweise Folgendes auf:
AttributeError: This method only works with the ScalarFormatter
In diesem Fall würden Sieaxis='y'
Folgendes hinzufügen . Sie können 'y' in die Achse mit den Problemen ändern.ax1.ticklabel_format(useOffset=False, style='plain', axis='y')
Quelle Frage und Antwort hier . Beachten Sie, dass die
axis 'y'
Verwendung des Befehls in den Antwortkommentaren ausgeblendet ist.quelle