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].

  • (0.1, 0.2, 0.5)

  • (0.1, 0.2, 0.5, 0.3)

Groß-/Kleinschreibung-unabhängige hexadezimale RGB- oder RGBA-Zeichenkette.

  • '#0f0f0f'

  • '#0f0f0f80'

Groß-/Kleinschreibung-unabhängige RGB- oder RGBA-Zeichenkette, äquivalent zu hexadezimaler Kurzschreibweise mit duplizierten Zeichen.

  • '#abc' als '#aabbcc'

  • '#fb1' als '#ffbb11'

Zeichenkettendarstellung eines Gleitkommawerts im geschlossenen Intervall [0, 1] für Graustufenwerte.

  • '0' als Schwarz

  • '1' als Weiß

  • '0.8' als hellgrau

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.

  • 'b' als Blau

  • 'g' als Grün

  • 'r' als Rot

  • 'c' als Cyan

  • 'm' als Magenta

  • 'y' als Gelb

  • 'k' als Schwarz

  • 'w' als Weiß

Groß-/Kleinschreibung-unabhängiger X11/CSS4-Farbname ohne Leerzeichen.

  • 'aquamarine'

  • 'mediumseagreen'

Groß-/Kleinschreibung-unabhängiger Farbname aus der xkcd-Farbumfrage mit dem Präfix 'xkcd:'.

  • 'xkcd:sky blue'

  • 'xkcd:eggshell'

Groß-/Kleinschreibung-unabhängige Tableau-Farben aus der kategorischen Palette 'T10'.

Hinweis

Dies ist der Standard-Farbzyklus.

  • 'tab:blue'

  • 'tab:orange'

  • 'tab:green'

  • 'tab:red'

  • 'tab:purple'

  • 'tab:brown'

  • 'tab:pink'

  • 'tab:gray'

  • 'tab:olive'

  • 'tab:cyan'

"CN"-Farbangabe, bei der 'C' einer Zahl vorangestellt wird, die als Index in den Standard-Eigenschaftszyklus dient.

Hinweis

Matplotlib indiziert die Farbe zur Zeichenzeit und standardmäßig schwarz, wenn der Zyklus keine Farbe enthält.

  • 'C0'

  • 'C1'

rcParams["axes.prop_cycle"] (Standard: cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']))

Tupel aus einem der oben genannten Farbformate und einem Alpha-Gleitkommawert.

Hinzugefügt in Version 3.8.

  • ('green', 0.3)

  • ('#f00', 0.9)

Der Sonderwert "none" ist vollständig transparent, d.h. äquivalent zu einem RGBA-Wert (0.0, 0.0, 0.0, 0.0)

  • 'none'

Siehe auch

Die folgenden Links bieten weitere Informationen zu Farben in Matplotlib.

"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

\[RGB_{ergebnis} = RGB_{hintergrund} * (1 - \alpha) + RGB_{vordergrund} * \alpha\]

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')
alpha values

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')
  • style: 'default'
  • style: '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()
colors

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

Galerie generiert von Sphinx-Gallery