[Python] Anpassen der Farbleiste

Vokabelbuch. Viel nachdrucken, weil es schwierig ist, jedes Mal zu suchen. Es gibt eine ursprüngliche URL.

[matplotlib.pyplot.colorbar] (https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.colorbar.html) [Qiita @ skotaro: Eine Geschichte, die denjenigen gewidmet ist, die dies durch Zerlegen der Farbleiste von Matplotlib herausgefunden haben oder die keine Probleme mehr mit der Anpassung der Farbleiste haben möchten.] (https://qiita.com/skotaro/items/01d66a8c9902a766a2c0)

Position anpassen: Zeichnen Sie einen Farbbalken auf die angegebenen Achsen

Angegeben durch fig.add_axes

Wird mit der Option cax = angegeben.

fig = plt.figure(figsize=(8,5))
ax  = fig.add_axes((0.05, 0.15, 0.9, 0.8))
im  = ax.imshow(np.random.random((10, 20)), cmap='jet')
cax = fig.add_axes((0.05, 0.05, 0.9, 0.08))
plt.colorbar(im, orientation='horizontal', cax=cax)

image.png

Angegeben durch make_axes_locatable

Die Art und Weise, wie der Farbbalken gezeichnet wird, ist dieselbe wie oben, nur die Art und Weise, wie Achsen erstellt werden, wird geändert.

from mpl_toolkits.axes_grid1 import make_axes_locatable
divider = make_axes_locatable(ax)

#Platz rechts schaffen
cax = divider.new_horizontal(size="2%", pad=0.05)
fig.add_axes(cax)
# OR
cax = divider.append_axes('right', '5%', pad='3%')

plt.colorbar(im, cax=cax)

Qiita @ termoshtt: Richten Sie die Farbleiste an der Abbildung mit matplotlib aus

Wenn Sie jedoch eine Projektion für ax angeben, funktioniert dies nicht.

Qiita @ nishimuraatsushi: Richten Sie die Größe der Farbleiste an der Matplotlib aus

Zeichne nur den Farbbalken

plt.figure(figsize=(8, 0.5))
norm = mcolors.DivergingNorm(vcenter=0.0, vmin=-5, vmax=5)
im   = ax.imshow(np.array([[0,1]]), cmap='bwr', norm=norm)
plt.gca().set_visible(False)
cax = plt.axes([0.1, 0.2, 0.8, 0.6])
cb  = plt.colorbar(im, orientation='horizontal', cax=cax)

[stackoverflow: Standalone colorbar (matplotlib)] (https://stackoverflow.com/questions/16595138/standalone-colorbar-matplotlib)

Der obige Code wird einmal mit imshow → gezeichnet und dann Axes für den Farbbalken definiert und so weiter.

--Speichern Sie diese Farbleiste alleine → Bearbeiten mit pptx usw. --Erstellen Sie eine Funktion, die Achsen übergibt, um einen Farbbalken und ein Bild (im im obigen Code) als Argumente zu zeichnen

In diesem Fall ist dies ausreichend. Das letztere Beispiel:

def draw_coloarbar(ax, im):
    return plt.colorbar(im, orientation='horizontal', cax=ax)

fig  = plt.figure(figsize=(8, 4))
ax   = fig.add_axes((0.05, 0.05, 0.9, 0.9))
im   = ax.imshow(np.array(np.random.random((10, 20))), cmap='jet')
cax = fig.add_axes([0.1, 0.45, 0.8, 0.1])
draw_coloarbar(cax, im)

image.png

In einer Funktion, die kein Bild als Argument übergibt, ist jedoch eine temporäre "Imshow" erforderlich

Wenn Sie eine Funktion erstellen, die nur den Farbbalken in den angegebenen "Achsen" zeichnet (nach einer temporären "Imshow"), unterscheidet sich die Methode zum Festlegen der Position:

def draw_coloarbar2(ax):
    norm = mcolors.DivergingNorm(vcenter=0.0, vmin=-5, vmax=5)
    im = ax.imshow(np.array([[0,1]]), cmap='bwr', norm=norm)
    ax.set_visible(False)
    return plt.colorbar(im, orientation='horizontal', #cax=ax) # cax=In diesem Fall wird die Farbleiste nicht angezeigt
                        ax=ax, fraction=1.0)

fig  = plt.figure(figsize=(8, 4))
ax   = fig.add_axes((0.05, 0.05, 0.9, 0.9))
im   = ax.imshow(np.array(np.random.random((10, 20))), cmap='jet')
cax = fig.add_axes([0.1, 0.45, 0.8, 0.1])
draw_coloarbar2(cax)

image.png

In diesem Fall muss die Position mit "ax =" anstelle von "cax =" angegeben werden. Der Unterschied in der Bedeutung dieser Argumente wird im Link oben auf der Seite beschrieben. Bruch = ist ein Argument darüber, wie viel der angegebenen Achsen für die Farbleiste verwendet werden soll.

Formanpassung

Beim Ändern der Dicke ist Aspekt =

plt.colorbar(aspect=20) #dünn
plt.colorbar(aspect=50) #dick

[stackoverflow: How to decrease colorbar WIDTH in matplotlib?] (https://stackoverflow.com/questions/33443334/how-to-decrease-colorbar-width-in-matplotlib)

Extend =, um Dreiecke an beiden Enden der Farbleiste hinzuzufügen

plt.colorbar(extend='both') #Dreieck an beiden Enden

Skalierung anpassen

Verwenden Sie "cbar.set_ticks ()" für die Position der Skala und "cbar.set_ticklabels ()" für die Zeichenfolge der Skala.

[Akira Takeshimas Webseite: Farbleiste] (http://hydro.iis.u-tokyo.ac.jp/~akira/page/python/contents/plot/general/colorbar.html) [matplotlib: pylab_examples example code: colorbar_tick_labelling_demo.py] (https://matplotlib.org/examples/pylab_examples/colorbar_tick_labelling_demo.html)

Holen Sie sich die Waage

Beachten Sie, dass sich die aufrufende Methode zwischen Ticks und Ticklabels unterscheidet.

ticks = cbar.get_ticks()
ticklabels = [ticklabel.get_text() for ticklabel in cbar.ax.get_xticklabels()]

Selbst wenn ich nur Ticklabels ändere, ärgere ich mich darüber, dass "set_ticks () aufgerufen worden sein muss" Das gleiche wird als "cbar.set_ticks (ticks)" angegeben.

Wenn Sie beispielsweise der Farbleiste eine Einheit hinzufügen möchten:

#obenstehendes-5 bis 5 Farbbalken als Balken
ticks = cbar.get_ticks() # [-4. -2.  0.  2.  4.]
ticklabels = [ticklabel.get_text() for ticklabel in cbar.ax.get_xticklabels()]
# ['−4', '−2', '0', '2', '4']
ticklabels[-1] += ' [unit]'
cbar.set_ticks(ticks)
cbar.set_ticklabels(ticklabels)

image.png

Schriftgröße ändern

cbar.ax.tick_params(labelsize=10)

[stackoverflow: Change fontsize of colorbars in matplotlib] (https://stackoverflow.com/questions/40184696/change-fontsize-of-colorbars-in-matplotlib)

Recommended Posts

[Python] Anpassen der Farbleiste
[Python] Passen Sie den Standard für die Farbkarte an
[Python] Ein Fortschrittsbalken auf dem Terminal
[Python] Holen Sie sich die Hauptfarbe aus dem Screenshot
Erstellen Sie eine Farbleiste mit Python + Qt (PySide)
Diejenige, die den Fortschrittsbalken in Python anzeigt
der Zen von Python
[Python] Teilen Sie das Datum
[ev3dev × Python] Farbsensor
Füllen Sie den Hintergrund mit einer einzigen Farbe mit OpenCV2 + Python
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
python3 Messen Sie die Verarbeitungsgeschwindigkeit.
Auf dem Weg zum Ruhestand von Python2
Finde Fehler in Python
Vergleichen wir die Python-Array-ähnlichen Typen
Über das Python-Modul venv
[Python] Holen Sie sich den Vormonat
Blender 2.9, Python, hexadezimale Farbspezifikation
[Python 2/3] Analysiert die Formatzeichenfolge
Balkendiagramm Rennen in Python
Rufen Sie die API mit python3 auf.
Über die Funktionen von Python
[Python] Überprüfen Sie die installierten Bibliotheken
Ich habe die Python-Quelle heruntergeladen
Die Kraft der Pandas: Python
Finden Sie den Maximalwert Python (verbessert)
Die Farbextraktion mit Python + OpenCV löste das Rätsel des grünen Hintergrunds
Überlassen Sie die mühsame Verarbeitung Python
[Python] Überprüfen Sie das aktuelle Verzeichnis und verschieben Sie das Verzeichnis
Extrahieren Sie die xz-Datei mit Python
Die Geschichte von Python und die Geschichte von NaN
Abrufen der arXiv-API in Python
Überprüfen Sie das Verhalten beim Zuweisen von Python
[Python] Finden Sie den zweitkleinsten Wert.
Erster Python 3 ~ Der Beginn der Wiederholung ~
Färben Sie das Integrationsintervall mit matplotlib.pyplot
Python im Browser: Brythons Empfehlung
Speichern Sie die Binärdatei in Python
AtCoder: Python: Papa der Beispieltest.
Klicken Sie in Python auf die Sesami-API
Probieren Sie das Python LINE Pay SDK aus
[Python] Uhr, die die Farbe ändert (Animation)
[Python] Klicken Sie auf die Google Übersetzungs-API
Holen Sie sich den Desktop-Pfad in Python
Fortschrittsbalken im Popup mit Python Kivy
[Python] Was ist @? (Über Dekorateure)
Existenz aus Sicht von Python
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich das Wetter mit Python-Anfragen 2
pyenv-change die Python-Version von virtualenv
Holen Sie sich den Skriptpfad in Python
Im Python-Befehl zeigt Python auf Python3.8
Implementieren Sie das Singleton-Muster in Python
So erhalten Sie die Python-Version
Finden Sie die Bearbeitungsentfernung (Levenshtein-Entfernung) mit Python
[Python] Was ist der sortierte Schlüssel?
Klicken Sie mit Python auf die Etherpad-Lite-API
Installieren Sie das Python-Plug-In mit Netbeans 8.0.2