Specifica dei colori #

Matplotlib riconosce i seguenti formati per specificare un colore.

Formato

Esempio

Tupla RGB o RGBA (rosso, verde, blu, alfa) di valori float in un intervallo chiuso [0, 1].

  • (0.1, 0.2, 0.5)

  • (0.1, 0.2, 0.5, 0.3)

Stringa esadecimale RGB o RGBA senza distinzione tra maiuscole e minuscole.

  • '#0f0f0f'

  • '#0f0f0f80'

Abbreviazioni esadecimali equivalenti a stringhe RGB o RGBA senza distinzione tra maiuscole e minuscole di caratteri duplicati.

  • '#abc'come'#aabbcc'

  • '#fb1'come'#ffbb11'

Rappresentazione di stringa del valore float in un intervallo chiuso per i valori in scala di grigi.[0, 1]

  • '0'come nero

  • '1'come bianco

  • '0.8'come grigio chiaro

Notazione abbreviata a carattere singolo per alcuni colori di base.

Nota

I colori verde, ciano, magenta e giallo non coincidono con i colori X11/CSS4. Le loro particolari sfumature sono state scelte per una migliore visibilità delle linee colorate su sfondi tipici.

  • 'b'come blu

  • 'g'come verde

  • 'r'come rosso

  • 'c'come ciano

  • 'm'come magenta

  • 'y'come giallo

  • 'k'come nero

  • 'w'come bianco

Nome del colore X11/CSS4 senza distinzione tra maiuscole e minuscole senza spazi.

  • 'aquamarine'

  • 'mediumseagreen'

Nome del colore senza distinzione tra maiuscole e minuscole da xkcd color survey con 'xkcd:' prefisso.

  • 'xkcd:sky blue'

  • 'xkcd:eggshell'

Colori Tableau senza distinzione tra maiuscole e minuscole dalla tavolozza categorica "T10".

Nota

Questo è il ciclo di colori predefinito.

  • 'tab:blue'

  • 'tab:orange'

  • 'tab:green'

  • 'tab:red'

  • 'tab:purple'

  • 'tab:brown'

  • 'tab:pink'

  • 'tab:gray'

  • 'tab:olive'

  • 'tab:cyan'

Specifica di colore "CN" dove 'C' precede un numero che funge da indice nel ciclo di proprietà predefinito.

Nota

Matplotlib indicizza il colore al momento del disegno e il valore predefinito è nero se il ciclo non include il colore.

  • 'C0'

  • 'C1'

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

Guarda anche

I collegamenti seguenti forniscono ulteriori informazioni sui colori in Matplotlib.

"Rosso", "Verde" e "Blu" sono le intensità di quei colori. In combinazione, rappresentano lo spazio colore.

Matplotlib disegna artisti in base al zorderparametro. Se non ci sono valori specificati, Matplotlib utilizza per impostazione predefinita l'ordine degli artisti aggiunti agli assi.

L'alfa per un artista controlla l'opacità. Indica come il colore RGB del nuovo Artist si combina con i colori RGB già presenti sugli Axes.

I due artisti si combinano con l'alpha compositing. Matplotlib utilizza l'equazione seguente per calcolare il risultato della fusione di un nuovo artista.

RGB_{new} = RGB_{below} * (1 - \alpha) + RGB_{artist} * \alpha

Alfa di 1 indica che il nuovo artista copre completamente il colore precedente. L'alfa di 0 per il colore superiore non è visibile; tuttavia, contribuisce alla fusione per valori intermedi come risultato cumulativo di tutti gli Artisti precedenti. La tabella seguente contiene esempi.

Valore alfa

Visivo

0.3

../../_images/color_zorder_A.png

1

../../_images/color_zorder_B.png

Nota

Il riordino degli artisti non è commutativo in Matplotlib.

Selezione colore "CN" #

Matplotlib converte i colori "CN" in RGBA quando si disegnano artisti. La sezione Styling con cycler contiene informazioni aggiuntive sul controllo dei colori e delle proprietà dello stile.

import numpy as np
import matplotlib.pyplot as plt
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('style: {!r}'.format(sty), 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')
  • stile: 'predefinito'
  • stile: 'seaborn-v0_8'

Il primo colore 'C0'è il titolo. Ogni trama utilizza il secondo e il terzo colore di ogni stile rcParams["axes.prop_cycle"](predefinito: ). Sono e , rispettivamente.cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])'C1''C2'

Confronto tra i colori X11/CSS4 e xkcd #

I colori xkcd provengono da un sondaggio tra gli utenti condotto dal webcomic xkcd .

95 dei 148 nomi di colore X11/CSS4 compaiono anche nel sondaggio sui colori xkcd. Quasi tutti sono associati a diversi valori di colore in X11/CSS4 e nella tavolozza xkcd. Solo "nero", "bianco" e "ciano" sono identici.

Ad esempio, 'blue'esegue il mapping a '#0000FF'considerando che 'xkcd:blue'esegue il mapping a '#0343DF'. A causa di queste collisioni di nomi, tutti i colori xkcd hanno il 'xkcd:'prefisso.

L'oggetto visivo seguente mostra le collisioni di nomi. I nomi dei colori in cui i valori dei colori concordano sono in grassetto.

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()
colori

Tempo di esecuzione totale dello script: (0 minuti 1,413 secondi)

Galleria generata da Sphinx-Gallery