Criação de Eixos de Grade Personalizados com Matplotlib

Beginner

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

Introdução

Neste laboratório, aprenderemos como criar uma grade personalizada de eixos com Matplotlib usando o módulo mpl_toolkits.axes_grid1. Criaremos dois exemplos: um com tamanhos de eixos e preenchimentos fixos, e outro com tamanhos de eixos escaláveis e preenchimentos fixos.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e 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ê.

Importando as Bibliotecas Necessárias

Começaremos importando as bibliotecas necessárias: matplotlib.pyplot para visualização e mpl_toolkits.axes_grid1 para criar a grade personalizada de eixos.

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import Divider, Size

Definindo a Função Auxiliar

Definiremos uma função auxiliar label_axes() que será usada para colocar um rótulo no centro de um eixo e remover as marcas de eixo.

def label_axes(ax, text):
    """Place a label at the center of an Axes, and remove the axis ticks."""
    ax.text(.5, .5, text, transform=ax.transAxes,
            horizontalalignment="center", verticalalignment="center")
    ax.tick_params(bottom=False, labelbottom=False,
                   left=False, labelleft=False)

Criando uma Grade Personalizada de Eixos com Tamanhos e Preenchimentos Fixos

Criaremos uma grade personalizada de eixos com tamanhos e preenchimentos fixos. Usaremos a classe Divider para dividir o retângulo dos eixos em uma grade com tamanhos especificados por horiz * vert. Em seguida, adicionaremos quatro eixos à figura usando o método add_axes() e especificaremos as posições de cada eixo usando o método new_locator() da classe Divider.

## Sizes are in inches.
horiz = [Size.Fixed(1.), Size.Fixed(.5), Size.Fixed(1.5), Size.Fixed(.5)]
vert = [Size.Fixed(1.5), Size.Fixed(.5), Size.Fixed(1.)]

rect = (0.1, 0.1, 0.8, 0.8)
fig = plt.figure(figsize=(6, 6))
fig.suptitle("Fixed axes sizes, fixed paddings")

div = Divider(fig, rect, horiz, vert, aspect=False)

## The rect parameter will actually be ignored and overridden by axes_locator.
ax1 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=0))
label_axes(ax1, "nx=0, ny=0")
ax2 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=2))
label_axes(ax2, "nx=0, ny=2")
ax3 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, ny=2))
label_axes(ax3, "nx=2, ny=2")
ax4 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, nx1=4, ny=0))
label_axes(ax4, "nx=2, nx1=4, ny=0")

plt.show()

Criando uma Grade Personalizada de Eixos com Tamanhos Escaláveis e Preenchimentos Fixos

Criaremos outra grade personalizada de eixos com tamanhos escaláveis e preenchimentos fixos. Usaremos a opção Size.Scaled() para especificar tamanhos de eixos que escalam com o tamanho da figura. Os passos restantes são semelhantes ao exemplo anterior.

## Sizes are in inches.
horiz = [Size.Scaled(1.5), Size.Fixed(.5), Size.Scaled(1.), Size.Scaled(.5)]
vert = [Size.Scaled(1.), Size.Fixed(.5), Size.Scaled(1.5)]

rect = (0.1, 0.1, 0.8, 0.8)
fig = plt.figure(figsize=(6, 6))
fig.suptitle("Scalable axes sizes, fixed paddings")

div = Divider(fig, rect, horiz, vert, aspect=False)

## The rect parameter will actually be ignored and overridden by axes_locator.
ax1 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=0))
label_axes(ax1, "nx=0, ny=0")
ax2 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=2))
label_axes(ax2, "nx=0, ny=2")
ax3 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, ny=2))
label_axes(ax3, "nx=2, ny=2")
ax4 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, nx1=4, ny=0))
label_axes(ax4, "nx=2, nx1=4, ny=0")

plt.show()

Resumo

Neste laboratório, aprendemos como criar uma grade personalizada de eixos com Matplotlib usando o módulo mpl_toolkits.axes_grid1. Criamos dois exemplos: um com tamanhos e preenchimentos de eixos fixos e outro com tamanhos de eixos escaláveis e preenchimentos fixos. Usamos a classe Divider para dividir o retângulo dos eixos em uma grade com tamanhos especificados por horiz * vert e adicionamos eixos à figura usando o método add_axes() e o método new_locator() da classe Divider.