Hinweis
Zum Ende springen, um den vollständigen Beispielcode herunterzuladen.
Farben spezifizieren#
Farbenformate#
Matplotlib erkennt die folgenden Formate zur Farbspezifikation.
Format |
Beispiel |
|---|---|
RGB- oder RGBA- (Rot, Grün, Blau, Alpha) Tupel von Gleitkommawerten in einem geschlossenen Intervall [0, 1]. |
|
Groß-/Kleinschreibung-unabhängige hexadezimale RGB- oder RGBA-Zeichenkette. |
|
Groß-/Kleinschreibung-unabhängige RGB- oder RGBA-Zeichenkette, äquivalent zu hexadezimaler Kurzschreibweise mit duplizierten Zeichen. |
|
Zeichenkettendarstellung eines Gleitkommawerts im geschlossenen Intervall |
|
Einkaraktige Kurzschreibweise für einige Basisfarben. Hinweis Die Farben Grün, Cyan, Magenta und Gelb stimmen nicht mit X11/CSS4-Farben überein. Ihre spezifischen Nuancen wurden für eine bessere Sichtbarkeit von farbigen Linien auf typischen Hintergründen gewählt. |
|
Groß-/Kleinschreibung-unabhängiger X11/CSS4-Farbname ohne Leerzeichen. |
|
Groß-/Kleinschreibung-unabhängiger Farbname aus der xkcd-Farbumfrage mit dem Präfix |
|
Groß-/Kleinschreibung-unabhängige Tableau-Farben aus der kategorischen Palette 'T10'. Hinweis Dies ist der Standard-Farbzyklus. |
|
"CN"-Farbangabe, bei der Hinweis Matplotlib indiziert die Farbe zur Zeichenzeit und standardmäßig schwarz, wenn der Zyklus keine Farbe enthält. |
|
|
|
Tupel aus einem der oben genannten Farbformate und einem Alpha-Gleitkommawert. Hinzugefügt in Version 3.8. |
|
Der Sonderwert "none" ist vollständig transparent, d.h. äquivalent zu einem RGBA-Wert |
|
Siehe auch
- Die folgenden Links bieten weitere Informationen zu Farben in Matplotlib.
Farbdemo Beispiel
Liste benannter Farben Beispiel
"Rot", "Grün" und "Blau" sind die Intensitäten dieser Farben. In Kombination stellen sie den Farbraum dar.
Transparenz#
Der Alpha-Wert einer Farbe gibt ihre Transparenz an, wobei 0 vollständig transparent und 1 vollständig opak ist. Wenn eine Farbe halbtransparent ist, scheint die Hintergrundfarbe durch.
Der Alpha-Wert bestimmt die resultierende Farbe durch Mischen der Vordergrundfarbe mit der Hintergrundfarbe gemäß der Formel
Das folgende Diagramm veranschaulicht den Effekt der Transparenz.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Rectangle
fig, ax = plt.subplots(figsize=(6.5, 1.65), layout='constrained')
ax.add_patch(Rectangle((-0.2, -0.35), 11.2, 0.7, color='C1', alpha=0.8))
for i, alpha in enumerate(np.linspace(0, 1, 11)):
ax.add_patch(Rectangle((i, 0.05), 0.8, 0.6, alpha=alpha, zorder=0))
ax.text(i+0.4, 0.85, f"{alpha:.1f}", ha='center')
ax.add_patch(Rectangle((i, -0.05), 0.8, -0.6, alpha=alpha, zorder=2))
ax.set_xlim(-0.2, 13)
ax.set_ylim(-1, 1)
ax.set_title('alpha values')
ax.text(11.3, 0.6, 'zorder=1', va='center', color='C0')
ax.text(11.3, 0, 'zorder=2\nalpha=0.8', va='center', color='C1')
ax.text(11.3, -0.6, 'zorder=3', va='center', color='C0')
ax.axis('off')

Das orangefarbene Rechteck ist halbtransparent mit alpha = 0.8. Die obere Reihe blauer Quadrate wird unterhalb und die untere Reihe blauer Quadrate wird oberhalb des orangefarbenen Rechtecks gezeichnet.
Siehe auch Zorder Demo, um mehr über die Zeichenreihenfolge zu erfahren.
"CN" Farbauswahl#
Matplotlib konvertiert "CN"-Farben beim Zeichnen von Künstlern in RGBA. Der Abschnitt Styling mit Cycler enthält zusätzliche Informationen zur Steuerung von Farben und Stileigenschaften.
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
th = np.linspace(0, 2*np.pi, 128)
def demo(sty):
mpl.style.use(sty)
fig, ax = plt.subplots(figsize=(3, 3))
ax.set_title(f'style: {sty!r}', color='C0')
ax.plot(th, np.cos(th), 'C1', label='C1')
ax.plot(th, np.sin(th), 'C2', label='C2')
ax.legend()
demo('default')
demo('seaborn-v0_8')
Die erste Farbe 'C0' ist der Titel. Jeder Plot verwendet die zweite und dritte Farbe des rcParams["axes.prop_cycle"] jedes Stils (Standard: cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])). Dies sind 'C1' und 'C2'.
Vergleich zwischen X11/CSS4 und xkcd-Farben#
Die xkcd-Farben stammen aus einer Nutzerumfrage, die vom Webcomic xkcd durchgeführt wurde.
95 der 148 X11/CSS4-Farbnamen erscheinen auch in der xkcd-Farbumfrage. Fast alle davon werden unterschiedlichen Farbwerten in der X11/CSS4- und in der xkcd-Palette zugeordnet. Nur 'black', 'white' und 'cyan' sind identisch.
Zum Beispiel wird 'blue' zu '#0000FF' zugeordnet, während 'xkcd:blue' zu '#0343DF' zugeordnet wird. Aufgrund dieser Namenskollisionen haben alle xkcd-Farben das Präfix 'xkcd:'.
Die folgende Grafik zeigt Namenskollisionen. Farbnahmen, bei denen die Farbwerte übereinstimmen, sind fett gedruckt.
import matplotlib.colors as mcolors
import matplotlib.patches as mpatch
overlap = {name for name in mcolors.CSS4_COLORS
if f'xkcd:{name}' in mcolors.XKCD_COLORS}
fig = plt.figure(figsize=[9, 5])
ax = fig.add_axes([0, 0, 1, 1])
n_groups = 3
n_rows = len(overlap) // n_groups + 1
for j, color_name in enumerate(sorted(overlap)):
css4 = mcolors.CSS4_COLORS[color_name]
xkcd = mcolors.XKCD_COLORS[f'xkcd:{color_name}'].upper()
# Pick text colour based on perceived luminance.
rgba = mcolors.to_rgba_array([css4, xkcd])
luma = 0.299 * rgba[:, 0] + 0.587 * rgba[:, 1] + 0.114 * rgba[:, 2]
css4_text_color = 'k' if luma[0] > 0.5 else 'w'
xkcd_text_color = 'k' if luma[1] > 0.5 else 'w'
col_shift = (j // n_rows) * 3
y_pos = j % n_rows
text_args = dict(fontsize=10, weight='bold' if css4 == xkcd else None)
ax.add_patch(mpatch.Rectangle((0 + col_shift, y_pos), 1, 1, color=css4))
ax.add_patch(mpatch.Rectangle((1 + col_shift, y_pos), 1, 1, color=xkcd))
ax.text(0.5 + col_shift, y_pos + .7, css4,
color=css4_text_color, ha='center', **text_args)
ax.text(1.5 + col_shift, y_pos + .7, xkcd,
color=xkcd_text_color, ha='center', **text_args)
ax.text(2 + col_shift, y_pos + .7, f' {color_name}', **text_args)
for g in range(n_groups):
ax.hlines(range(n_rows), 3*g, 3*g + 2.8, color='0.7', linewidth=1)
ax.text(0.5 + 3*g, -0.3, 'X11/CSS4', ha='center')
ax.text(1.5 + 3*g, -0.3, 'xkcd', ha='center')
ax.set_xlim(0, 3 * n_groups)
ax.set_ylim(n_rows, -1)
ax.axis('off')
plt.show()

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

