Tutorial de barras de cores personalizadas #

Este tutorial mostra como construir e personalizar barras de cores independentes, ou seja, sem um gráfico anexado.

Barras de cores personalizadas #

A colorbarprecisa de um objeto "mapeável" ( matplotlib.cm.ScalarMappable) (normalmente, uma imagem) que indique o mapa de cores e a norma a ser usada. Para criar uma barra de cores sem uma imagem anexada, pode-se usar um ScalarMappablesem dados associados.

Barra de cores contínua básica #

Aqui criamos uma barra de cores contínua básica com marcações e rótulos.

Os argumentos para a colorbarchamada são os ScalarMappable (construídos usando os argumentos norm e cmap ), os eixos onde a barra de cores deve ser desenhada e a orientação da barra de cores.

Para obter mais informações, consulte a colorbarAPI.

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')
somente barra de cores
<matplotlib.colorbar.Colorbar object at 0x7f2cdf4e94e0>

Barra de cores estendida com escala de cores contínua #

O segundo exemplo mostra como criar uma barra de cores discreta com base em um cmap contínuo. Com o argumento da palavra-chave "extend", as cores apropriadas são escolhidas para preencher o espaço de cores, incluindo as extensões:

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")
somente barra de cores
<matplotlib.colorbar.Colorbar object at 0x7f2cfb5e67a0>

Barra de cores de intervalos discretos #

O terceiro exemplo ilustra o uso de um ListedColormapque gera um mapa de cores a partir de um conjunto de cores listadas, colors.BoundaryNormque gera um índice de mapa de cores com base em intervalos discretos e extremidades estendidas para mostrar as cores de valor "acima" e "abaixo". Acima e abaixo são usados ​​para exibir dados fora do intervalo normalizado [0, 1]. Aqui, passamos cores como tons de cinza como uma string que codifica um ponto flutuante no intervalo 0-1.

Se a ListedColormapfor usado, o comprimento da matriz de limites deve ser um maior que o comprimento da lista de cores. Os limites devem ser monotonicamente crescentes.

Desta vez, passamos argumentos adicionais para colorbar. Para que os valores fora do intervalo sejam exibidos na barra de cores sem usar a palavra-chave extend com colors.BoundaryNorm, temos que usar o argumento da palavra-chave extend diretamente na chamada da barra de cores. Aqui também usamos o argumento de espaçamento para tornar o comprimento de cada segmento da barra de cores proporcional ao seu intervalo correspondente.

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',
)
somente barra de cores
<matplotlib.colorbar.Colorbar object at 0x7f2cdf4e8430>

Barra de cores com comprimentos de extensão personalizados #

Aqui ilustramos o uso de extensões de barra de cores de comprimento personalizado, em uma barra de cores com intervalos discretos. Para tornar o comprimento de cada extensão igual ao comprimento das cores internas, use 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()
somente barra de cores

Galeria gerada por Sphinx-Gallery