Especificando Cores #

Matplotlib reconhece os seguintes formatos para especificar uma cor.

Formato

Exemplo

Tupla RGB ou RGBA (vermelho, verde, azul, alfa) de valores flutuantes em um intervalo fechado [0, 1].

  • (0.1, 0.2, 0.5)

  • (0.1, 0.2, 0.5, 0.3)

Cadeia RGB ou RGBA sem distinção entre maiúsculas e minúsculas.

  • '#0f0f0f'

  • '#0f0f0f80'

Abreviação hexadecimal equivalente de cadeia de caracteres RGB ou RGBA sem distinção entre maiúsculas e minúsculas de caracteres duplicados.

  • '#abc'Como'#aabbcc'

  • '#fb1'Como'#ffbb11'

Representação de string do valor flutuante em intervalo fechado para valores em tons de cinza.[0, 1]

  • '0'como preto

  • '1'como branco

  • '0.8'como cinza claro

Notação abreviada de um único caractere para algumas cores básicas.

Observação

As cores verde, ciano, magenta e amarelo não coincidem com as cores X11/CSS4. Suas tonalidades particulares foram escolhidas para melhor visibilidade das linhas coloridas contra fundos típicos.

  • 'b'tão azul

  • 'g'tão verde

  • 'r'como vermelho

  • 'c'como ciano

  • 'm'como magenta

  • 'y'como amarelo

  • 'k'como preto

  • 'w'como branco

Nome da cor X11/CSS4 sem distinção entre maiúsculas e minúsculas e sem espaços.

  • 'aquamarine'

  • 'mediumseagreen'

Nome da cor que não diferencia maiúsculas de minúsculas da pesquisa de cores xkcd com 'xkcd:' prefixo.

  • 'xkcd:sky blue'

  • 'xkcd:eggshell'

Cores do Tableau que não diferenciam maiúsculas de minúsculas da paleta categórica 'T10'.

Observação

Este é o ciclo de cores padrão.

  • 'tab:blue'

  • 'tab:orange'

  • 'tab:green'

  • 'tab:red'

  • 'tab:purple'

  • 'tab:brown'

  • 'tab:pink'

  • 'tab:gray'

  • 'tab:olive'

  • 'tab:cyan'

Especificação de cor "CN" onde 'C' precede um número que atua como um índice no ciclo de propriedade padrão.

Observação

O Matplotlib indexa a cor no momento do desenho e o padrão é preto se o ciclo não incluir a cor.

  • 'C0'

  • 'C1'

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

Veja também

Os links a seguir fornecem mais informações sobre cores no Matplotlib.

"Vermelho", "Verde" e "Azul" são as intensidades dessas cores. Em combinação, eles representam o espaço de cores.

Matplotlib desenha artistas com base no zorderparâmetro. Se não houver valores especificados, o padrão do Matplotlib é a ordem dos artistas adicionados aos eixos.

O alfa de um Artista controla a opacidade. Indica como a cor RGB do novo Artista se combina com as cores RGB já existentes nos Eixos.

Os dois Artistas combinam com a composição alfa. O Matplotlib usa a equação abaixo para calcular o resultado da combinação de um novo Artista.

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

Alfa de 1 indica que o novo Artista cobre completamente a cor anterior. O alfa de 0 para a cor superior não é visível; no entanto, contribui para a mistura de valores intermediários como resultado cumulativo de todos os Artistas anteriores. A tabela a seguir contém exemplos.

valor alfa

Visual

0.3

../../_images/color_zorder_A.png

1

../../_images/color_zorder_B.png

Observação

A reordenação de artistas não é comutativa no Matplotlib.

Seleção de cores "CN" #

Matplotlib converte cores "CN" em RGBA ao desenhar artistas. A seção Estilizando com ciclador contém informações adicionais sobre o controle de cores e propriedades de estilo.

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')
  • estilo: 'padrão'
  • estilo: 'seaborn-v0_8'

A primeira cor 'C0'é o título. Cada plotagem usa a segunda e terceira cores de cada estilo rcParams["axes.prop_cycle"](padrão: ). Eles são e , respectivamente.cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])'C1''C2'

Comparação entre as cores X11/CSS4 e xkcd #

As cores xkcd vêm de uma pesquisa de usuários realizada pelo webcomic xkcd .

95 dos 148 nomes de cores X11/CSS4 também aparecem na pesquisa de cores xkcd. Quase todos eles mapeiam para diferentes valores de cores no X11/CSS4 e na paleta xkcd. Apenas 'preto', 'branco' e 'ciano' são idênticos.

Por exemplo, 'blue'mapeia para '#0000FF'enquanto 'xkcd:blue'mapeia para '#0343DF'. Devido a essas colisões de nomes, todas as cores xkcd têm o 'xkcd:'prefixo.

O visual abaixo mostra as colisões de nomes. Os nomes das cores em que os valores das cores concordam estão em negrito.

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

Tempo total de execução do script: ( 0 minutos 1,413 segundos)

Galeria gerada por Sphinx-Gallery