Ich habe ein Log-Log-Diagramm, in dem der Bereich von 10^-3
bis 10^+3
liegt. Ich möchte, dass die Werte ≥10^0
ein +
-Zeichen im Exponenten haben, analog dazu, wie die Werte <10^0
ein -
-Zeichen im Exponenten haben. Gibt es einen einfachen Weg, dies in Matplotlib zu tun?
Ich habe in FuncFormatter
gesucht, aber es scheint übermäßig komplex zu sein, um dies zu erreichen und ich konnte es auch nicht zum Laufen bringen.
Sie können dies mit einem FuncFormatter
aus dem matplotlib.ticker
Modul tun. Sie benötigen eine Bedingung, ob der Tick-Wert größer als oder kleiner als 1 ist. Wenn log10(tick value)
also >0
ist, fügen Sie das +
-Zeichen in der Label-Zeichenfolge hinzu, andernfalls wird das Minuszeichen angezeigt automatisch.
Einige Erklärung der Formatzeichenfolge:
%Vor% Die doppelten Klammern {{
und }}
werden an LaTeX
übergeben, um anzuzeigen, dass alles in ihnen als Exponent ausgegeben werden soll. Wir brauchen doppelte Klammern, da die einzelnen Klammern von Python verwendet werden, um die Formatzeichenfolge zu enthalten, in diesem Fall {:.0f}
. Weitere Informationen zu Formatspezifikationen finden Sie in den Dokumenten , aber die TL; DR für Ihren Fall ist, dass wir einen Float mit einer Genauigkeit von 0 Dezimalstellen formatieren (dh es wird im Wesentlichen als eine Ganzzahl gedruckt); Der Exponent ist in diesem Fall ein Gleitkomma, weil np.log10
einen Gleitkommawert zurückgibt. (man könnte alternativ die Ausgabe von np.log10
in ein int umwandeln und dann die Zeichenkette als int formatieren - nur eine von Ihnen bevorzugte Einstellung).
Ich hoffe, Sie meinen das so:
%Vor% Verwenden Sie dann FuncFormatter
, z. für eine Farbleiste: plt.colorbar(name_of_plot,ticks=list_with_tick_locations, format = ticker.FuncFormatter(fmt))
. Ich denke du musst import matplotlib.ticker as ticker
importieren.
Grüße
Tags und Links python matplotlib python-2.7