Notiz
Klicken Sie hier , um den vollständigen Beispielcode herunterzuladen
Angepasstes Farbbalken-Tutorial #
Dieses Tutorial zeigt, wie Sie eigenständige Farbbalken erstellen und anpassen, dh ohne angehängten Plot.
Kundenspezifische Farbbalken #
A colorbar
benö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 ScalarMappable
ohne zugehörige Daten verwenden.
Einfacher kontinuierlicher Farbbalken #
Hier erstellen wir einen grundlegenden kontinuierlichen Farbbalken mit Häkchen und Beschriftungen.
Die Argumente für den colorbar
Aufruf 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 colorbar
API.
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')
<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")
<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.BoundaryNorm
generiert, 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 ListedColormap
verwendet 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',
)
<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()