Observação
Clique aqui para baixar o código de exemplo completo
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 colorbar
precisa 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 ScalarMappable
sem 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 colorbar
chamada 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 colorbar
API.
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')
<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")
<matplotlib.colorbar.Colorbar object at 0x7f2cfb5e67a0>
Barra de cores de intervalos discretos #
O terceiro exemplo ilustra o uso de um
ListedColormap
que gera um mapa de cores a partir de um conjunto de cores listadas, colors.BoundaryNorm
que 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 ListedColormap
for 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',
)
<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()