Hinweis
Zum Ende springen, um den vollständigen Beispielcode herunterzuladen.
Benutzerdefinierte Farbbalken-Tutorial#
Dieses Tutorial zeigt, wie eigenständige Farbbalken erstellt und angepasst werden, d.h. ohne angehängten Plot.
Ein colorbar benötigt ein "abbildbares" (matplotlib.cm.ScalarMappable) Objekt (typischerweise ein Bild), das die Farbkarte und die zu verwendende Norm angibt. Um einen Farbbalken ohne angehängtes Bild zu erstellen, kann stattdessen ein ScalarMappable ohne zugehörige Daten verwendet werden.
import matplotlib.pyplot as plt
import matplotlib as mpl
Einfacher kontinuierlicher Farbbalken#
Hier erstellen wir einen einfachen kontinuierlichen Farbbalken mit Ticks und Beschriftungen.
Die Argumente für den colorbar-Aufruf sind das ScalarMappable (konstruiert mit den Argumenten norm und cmap), die Achsen, auf denen der Farbbalken gezeichnet werden soll, und die Ausrichtung des Farbbalkens.
Weitere Informationen finden Sie in der colorbar API.
fig, ax = plt.subplots(figsize=(6, 1), layout='constrained')
cmap = mpl.cm.cool
norm = mpl.colors.Normalize(vmin=5, vmax=10)
fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
cax=ax, orientation='horizontal', label='Some Units')

Farbbalken neben einer bereits vorhandenen Achse#
Alle Beispiele in diesem Tutorial (außer diesem) zeigen einen eigenständigen Farbbalken auf einer eigenen Abbildung, aber es ist möglich, den Farbbalken *neben* einer bereits vorhandenen Achse ax anzuzeigen, indem ax=ax an den colorbar()-Aufruf übergeben wird (bedeutet "Farbbalken neben ax zeichnen") anstelle von cax=ax (bedeutet "Farbbalken auf ax zeichnen").
fig, ax = plt.subplots(layout='constrained')
fig.colorbar(mpl.cm.ScalarMappable(norm=mpl.colors.Normalize(0, 1), cmap='magma'),
ax=ax, orientation='vertical', label='a colorbar label')

Diskreter und erweiterter Farbbalken mit kontinuierlicher Farbskala#
Das folgende Beispiel zeigt, wie ein diskreter Farbbalken basierend auf einem kontinuierlichen cmap erstellt wird. Wir verwenden matplotlib.colors.BoundaryNorm, um die Intervallgrenzen zu beschreiben (die in aufsteigender Reihenfolge sein müssen), und übergeben weiter das Argument extend, um zusätzliche "über" und "unter" Farben anzuzeigen (die für Daten außerhalb des Normbereichs verwendet werden).
fig, ax = plt.subplots(figsize=(6, 1), layout='constrained')
cmap = mpl.cm.viridis
bounds = [-1, 2, 5, 7, 12, 15]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N, extend='both')
fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
cax=ax, orientation='horizontal',
label="Discrete intervals with extend='both' keyword")

Farbbalken mit beliebigen Farben#
Das folgende Beispiel verwendet immer noch eine BoundaryNorm, um diskrete Intervallgrenzen zu beschreiben, verwendet aber nun eine matplotlib.colors.ListedColormap, um jedem Intervall eine beliebige Farbe zuzuordnen (es muss genauso viele Intervalle wie Farben geben). Die "über" und "unter" Farben werden auf der Farbkarte mit Colormap.with_extremes gesetzt.
Wir übergeben auch zusätzliche Argumente an colorbar
Um die Werte außerhalb des Bereichs auf dem Farbbalken anzuzeigen, verwenden wir das Argument extend im colorbar()-Aufruf. (Dies ist äquivalent zur Übergabe des Arguments extend im Konstruktor von
BoundaryNorm, wie im vorherigen Beispiel geschehen.)Damit die Länge jedes Farbbalkensegments proportional zu seinem entsprechenden Intervall ist, verwenden wir das Argument spacing im colorbar()-Aufruf.
fig, ax = plt.subplots(figsize=(6, 1), layout='constrained')
cmap = (mpl.colors.ListedColormap(['red', 'green', 'blue', 'cyan'])
.with_extremes(under='yellow', over='magenta'))
bounds = [1, 2, 4, 7, 8]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
fig.colorbar(
mpl.cm.ScalarMappable(cmap=cmap, norm=norm),
cax=ax, orientation='horizontal',
extend='both',
spacing='proportional',
label='Discrete intervals, some other units',
)

Farbbalken mit benutzerdefinierten Erweiterungslängen#
Wir können die Länge der Farbbalkenerweiterungen bei einem Farbbalken mit diskreten Intervallen anpassen. Um die Länge jeder Erweiterung gleich der Länge der inneren Farben zu machen, verwenden Sie extendfrac='auto'.
fig, ax = plt.subplots(figsize=(6, 1), layout='constrained')
cmap = (mpl.colors.ListedColormap(['royalblue', 'cyan', 'yellow', 'orange'])
.with_extremes(over='red', under='blue'))
bounds = [-1.0, -0.5, 0.0, 0.5, 1.0]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
fig.colorbar(
mpl.cm.ScalarMappable(cmap=cmap, norm=norm),
cax=ax, orientation='horizontal',
extend='both', extendfrac='auto',
spacing='uniform',
label='Custom extension lengths, some other units',
)
plt.show()

Gesamtlaufzeit des Skripts: (0 Minuten 1,066 Sekunden)