Personalizando Eixos e Barras de Cores do Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Matplotlib é uma biblioteca Python que permite a criação de visualizações estáticas, animadas e interativas em Python. É amplamente utilizada em computação científica, análise de dados, machine learning e muito mais. Neste laboratório, você aprenderá como plotar imagens usando Matplotlib e como manipular a localização de eixos e barras de cores.

Dicas da VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar Bibliotecas

Nesta etapa, importaremos as bibliotecas necessárias que serão usadas neste laboratório. Usaremos matplotlib.pyplot e cbook de matplotlib para obter uma imagem de amostra.

import matplotlib.pyplot as plt
from matplotlib import cbook

Obter Imagem de Demonstração

Nesta etapa, definiremos uma função para obter uma imagem de demonstração e sua extensão. Usaremos a função get_sample_data() de cbook para obter uma imagem de amostra.

def get_demo_image():
    z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")  ## 15x15 array
    return z, (-3, 4, -4, 3)

Imagem Simples e Barra de Cores

Nesta etapa, criaremos uma imagem simples e sua barra de cores. Usaremos a função imshow() de pyplot para criar a imagem e a função colorbar() para criar a barra de cores.

def demo_simple_image(ax):
    Z, extent = get_demo_image()

    im = ax.imshow(Z, extent=extent)
    cb = plt.colorbar(im)
    cb.ax.yaxis.set_tick_params(labelright=False)

Imagem e Barra de Cores com Posicionamento em Tempo de Desenho - Uma Abordagem Difícil

Nesta etapa, criaremos uma imagem e sua barra de cores com posicionamento em tempo de desenho de uma maneira difícil. Usaremos SubplotDivider de mpl_toolkits.axes_grid1 para criar um divisor para os eixos e a barra de cores.

def demo_locatable_axes_hard(fig):
    from mpl_toolkits.axes_grid1 import Size, SubplotDivider

    divider = SubplotDivider(fig, 2, 2, 2, aspect=True)

    ## axes for image
    ax = fig.add_subplot(axes_locator=divider.new_locator(nx=0, ny=0))
    ## axes for colorbar
    ax_cb = fig.add_subplot(axes_locator=divider.new_locator(nx=2, ny=0))

    divider.set_horizontal([
        Size.AxesX(ax),  ## main axes
        Size.Fixed(0.05),  ## padding, 0.1 inch
        Size.Fixed(0.2),  ## colorbar, 0.3 inch
    ])
    divider.set_vertical([Size.AxesY(ax)])

    Z, extent = get_demo_image()

    im = ax.imshow(Z, extent=extent)
    plt.colorbar(im, cax=ax_cb)
    ax_cb.yaxis.set_tick_params(labelright=False)

Imagem e Barra de Cores com Posicionamento em Tempo de Desenho - Uma Abordagem Fácil

Nesta etapa, criaremos uma imagem e sua barra de cores com posicionamento em tempo de desenho de uma maneira fácil. Usaremos make_axes_locatable de mpl_toolkits.axes_grid1 para criar um divisor para os eixos e a barra de cores.

def demo_locatable_axes_easy(ax):
    from mpl_toolkits.axes_grid1 import make_axes_locatable

    divider = make_axes_locatable(ax)

    ax_cb = divider.append_axes("right", size="5%", pad=0.05)
    fig = ax.get_figure()
    fig.add_axes(ax_cb)

    Z, extent = get_demo_image()
    im = ax.imshow(Z, extent=extent)

    plt.colorbar(im, cax=ax_cb)
    ax_cb.yaxis.tick_right()
    ax_cb.yaxis.set_tick_params(labelright=False)

Duas Imagens Lado a Lado com Preenchimento Fixo

Nesta etapa, criaremos duas imagens lado a lado com preenchimento fixo. Usaremos make_axes_locatable de mpl_toolkits.axes_grid1 para criar um divisor para os eixos e a barra de cores.

def demo_images_side_by_side(ax):
    from mpl_toolkits.axes_grid1 import make_axes_locatable

    divider = make_axes_locatable(ax)

    Z, extent = get_demo_image()
    ax2 = divider.append_axes("right", size="100%", pad=0.05)
    fig1 = ax.get_figure()
    fig1.add_axes(ax2)

    ax.imshow(Z, extent=extent)
    ax2.imshow(Z, extent=extent)
    ax2.yaxis.set_tick_params(labelleft=False)

Plotagem

Nesta etapa, criaremos uma figura e adicionaremos subplots para cada imagem que queremos criar.

def demo():
    fig = plt.figure(figsize=(6, 6))

    ## PLOT 1
    ## simple image & colorbar
    ax = fig.add_subplot(2, 2, 1)
    demo_simple_image(ax)

    ## PLOT 2
    ## image and colorbar with draw-time positioning -- a hard way
    demo_locatable_axes_hard(fig)

    ## PLOT 3
    ## image and colorbar with draw-time positioning -- an easy way
    ax = fig.add_subplot(2, 2, 3)
    demo_locatable_axes_easy(ax)

    ## PLOT 4
    ## two images side by side with fixed padding.
    ax = fig.add_subplot(2, 2, 4)
    demo_images_side_by_side(ax)

    plt.show()

Resumo

Neste laboratório, aprendemos como plotar imagens usando Matplotlib e como manipular a localização de eixos e barras de cores. Cobrimos diferentes maneiras de criar imagens e barras de cores e como posicioná-las na figura. Com o conhecimento adquirido neste laboratório, você será capaz de criar visualizações mais complexas e manipulá-las para atender às suas necessidades.