+ Zeichen zum Exponenten in Matplotlib-Achsen hinzufügen

8

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.

    
nluigi 15.02.2016, 17:44
quelle

2 Antworten

5

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.

%Vor%

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).

    
tom 15.02.2016, 20:47
quelle
0

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

    
DonkeyKong 15.02.2016 20:12
quelle

Tags und Links