Angepasstes Farbbalken-Tutorial #

Dieses Tutorial zeigt, wie Sie eigenständige Farbbalken erstellen und anpassen, dh ohne angehängten Plot.

Kundenspezifische Farbbalken #

A colorbarbenötigt ein "zuordnungsfähiges" ( matplotlib.cm.ScalarMappable) Objekt (normalerweise ein Bild), das die Farbtabelle und die zu verwendende Norm angibt. Um einen Farbbalken ohne angehängtes Bild zu erstellen, kann man stattdessen einen ScalarMappableohne zugehörige Daten verwenden.

Einfacher kontinuierlicher Farbbalken #

Hier erstellen wir einen grundlegenden kontinuierlichen Farbbalken mit Häkchen und Beschriftungen.

Die Argumente für den colorbarAufruf sind die ScalarMappable (unter Verwendung der norm- und cmap- Argumente konstruierten), die Achsen, an denen der Farbbalken gezeichnet werden soll, und die Ausrichtung des Farbbalkens.

Weitere Informationen finden Sie in der colorbarAPI.

import matplotlib.pyplot as plt
import matplotlib as mpl

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

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')
nur Farbbalken
<matplotlib.colorbar.Colorbar object at 0x7f2cdf4e94e0>

Erweiterter Farbbalken mit durchgehender Farbskala #

Das zweite Beispiel zeigt, wie man einen diskreten Farbbalken basierend auf einer kontinuierlichen cmap erstellt. Mit dem Schlüsselwortargument „extend“ werden die passenden Farben ausgewählt, um den Farbraum einschließlich der Erweiterungen zu füllen:

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

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")
nur Farbbalken
<matplotlib.colorbar.Colorbar object at 0x7f2cfb5e67a0>

Diskrete Intervalle Farbbalken #

Das dritte Beispiel veranschaulicht die Verwendung von a ListedColormap, das eine Farbtabelle aus einem Satz aufgelisteter Farben colors.BoundaryNormgeneriert, die einen Farbtabellenindex basierend auf diskreten Intervallen und verlängerten Enden generiert, um die "Über"- und "Unter"-Wertfarben anzuzeigen. Über und unter werden verwendet, um Daten außerhalb des normalisierten Bereichs [0, 1] anzuzeigen. Hier übergeben wir Farben als Graustufen als Zeichenfolge, die einen Float im Bereich 0-1 codiert.

Wenn a ListedColormapverwendet wird, muss die Länge des Begrenzungsarrays um eins größer sein als die Länge der Farbliste. Die Grenzen müssen monoton steigend sein.

Dieses Mal übergeben wir zusätzliche Argumente an colorbar. Damit die Werte außerhalb des Bereichs auf der Farbleiste angezeigt werden, ohne das Schlüsselwort extendcolors.BoundaryNorm mit zu verwenden, müssen wir das Argument des Schlüsselworts extend direkt im Aufruf der Farbleiste verwenden. Hier verwenden wir auch das Abstandsargument, um die Länge jedes Farbbalkensegments proportional zu seinem entsprechenden Intervall zu machen.

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = (mpl.colors.ListedColormap(['red', 'green', 'blue', 'cyan'])
        .with_extremes(over='0.25', under='0.75'))

bounds = [1, 2, 4, 7, 8]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
fig.colorbar(
    mpl.cm.ScalarMappable(cmap=cmap, norm=norm),
    cax=ax,
    extend='both',
    ticks=bounds,
    spacing='proportional',
    orientation='horizontal',
    label='Discrete intervals, some other units',
)
nur Farbbalken
<matplotlib.colorbar.Colorbar object at 0x7f2cdf4e8430>

Farbbalken mit benutzerdefinierten Verlängerungslängen #

Hier veranschaulichen wir die Verwendung von Farbbalkenerweiterungen mit benutzerdefinierter Länge auf einem Farbbalken mit diskreten Intervallen. Um die Länge jeder Verlängerung der Länge der Innenfarben anzupassen, verwenden Sie extendfrac='auto'.

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

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,
    extend='both',
    extendfrac='auto',
    ticks=bounds,
    spacing='uniform',
    orientation='horizontal',
    label='Custom extension lengths, some other units',
)

plt.show()
nur Farbbalken

Galerie generiert von Sphinx-Gallery