Python matplotlib colorbar wissenschaftliche Notation Basis

9

Ich versuche, eine Farbleiste auf meinen Matplotlib-Kontur-Plots anzupassen. Während ich wissenschaftliche Notation verwenden kann, versuche ich, die Basis der Notation zu ändern - im Wesentlichen so, dass meine Ticks im Bereich von (-100,100) anstatt (-10,10) liegen würden.

Zum Beispiel erzeugt dies ein einfaches Diagramm ...

%Vor%

wie folgt:

Ich möchte jedoch, dass die Beschriftung über der Farbleiste 1e-2 ist und die Zahlen zwischen -10 und 10 liegen.

Wie würde ich darüber gehen?

    
John 10.04.2017, 13:12
quelle

2 Antworten

2
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ tag123matplotlib ___ Matplotlib ist eine Grafikbibliothek für Python, die interaktiv verwendet oder in eigenständige GUIs eingebettet werden kann. Seine kompakte "pyplot" -Schnittstelle ähnelt den Zeichenfunktionen von MATLAB®. ___ tag123colorbar ___ Fragen, die die Verwendung und Anpassung von Farbbalken in Zahlen beinhalten ___ qstnhdr ___ Python matplotlib colorbar wissenschaftliche Notation Basis ___ tag123contourf ___ Gefülltes zweidimensionales Konturdiagramm (MATLAB Funktionsreferenz) ___ antwort43325107 ___

Eine mögliche Lösung kann sein, die ScalarFormatter abzuleiten und die Größenordnung wie in dieser Frage festzulegen: Stellen Sie die wissenschaftliche Notation mit einem festen Exponenten und signifikanten Ziffern für mehrere Unterplots ein

Sie würden dann diesen Formatierer mit der Größenordnung als Argument order , OOMFormatter(-2, mathText=False) aufrufen. mathText wird auf "false" gesetzt, um die Notation aus der Frage zu erhalten, d.h. Wenn Sie es auf True setzen, erhalten Sie .

Sie können den Formatierer dann über das format -Argument der Farbleiste auf die Farbleiste setzen.

%Vor%

    
___ answer43326096 ___

Ähnlich wie bei @ImportanceOfBeingErnes könnten Sie eine %code% ( Dokumentation ) verwenden. an die Sie nur eine Funktion übergeben, um die Tickbeschriftungen zu bestimmen. Dadurch wird die automatische Erzeugung der %code% -Header für Ihre Farbleiste entfernt, aber ich kann mir vorstellen, dass Sie sie manuell hinzufügen können (ich hatte Probleme damit, obwohl ich sie auf der Seite hinzufügen konnte). Mit %code% können Sie nur String-Tick-Werte erzeugen, was den Vorteil hat, dass Sie nicht akzeptieren müssen, wie Python denkt, dass eine Zahl angezeigt werden soll.

%Vor%

Dies wird ein Diagramm erzeugen, das so aussieht.

    
___ qstntxt ___

Ich versuche, eine Farbleiste auf meinen Matplotlib-Kontur-Plots anzupassen. Während ich wissenschaftliche Notation verwenden kann, versuche ich, die Basis der Notation zu ändern - im Wesentlichen so, dass meine Ticks im Bereich von (-100,100) anstatt (-10,10) liegen würden.

Zum Beispiel erzeugt dies ein einfaches Diagramm ...

%Vor%

wie folgt:

Ich möchte jedoch, dass die Beschriftung über der Farbleiste 1e-2 ist und die Zahlen zwischen -10 und 10 liegen.

Wie würde ich darüber gehen?

    
___
ImportanceOfBeingErnest 10.04.2017, 13:52
quelle
1

Ähnlich wie bei @ImportanceOfBeingErnes könnten Sie eine FuncFormatter ( Dokumentation ) verwenden. an die Sie nur eine Funktion übergeben, um die Tickbeschriftungen zu bestimmen. Dadurch wird die automatische Erzeugung der 1e-2 -Header für Ihre Farbleiste entfernt, aber ich kann mir vorstellen, dass Sie sie manuell hinzufügen können (ich hatte Probleme damit, obwohl ich sie auf der Seite hinzufügen konnte). Mit FuncFormatter können Sie nur String-Tick-Werte erzeugen, was den Vorteil hat, dass Sie nicht akzeptieren müssen, wie Python denkt, dass eine Zahl angezeigt werden soll.

%Vor%

Dies wird ein Diagramm erzeugen, das so aussieht.

    
user2027202827 10.04.2017 14:38
quelle