Rotulagem de Contornos Matplotlib Personalizada

Beginner

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

Introdução

Neste tutorial, aprenderemos como criar rótulos de contorno em Matplotlib. Rótulos de contorno são usados para rotular os contornos em um gráfico de contorno. Este tutorial cobrirá algumas técnicas avançadas para criar rótulos de contorno personalizados.

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ê.

Definindo nossa superfície

Começaremos definindo nossa superfície usando numpy e matplotlib. Isso nos dará um conjunto de dados para trabalhar.

import matplotlib.pyplot as plt
import numpy as np

delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2

Criando rótulos de contorno com formatadores de nível personalizados

Agora criaremos rótulos de contorno com formatadores de nível personalizados. Isso nos permitirá formatar os rótulos de uma maneira específica. Neste caso, removeremos zeros à direita e adicionaremos um sinal de porcentagem.

def fmt(x):
    s = f"{x:.1f}"
    if s.endswith("0"):
        s = f"{x:.0f}"
    return rf"{s} \%" if plt.rcParams["text.usetex"] else f"{s} %"

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
ax.clabel(CS, CS.levels, inline=True, fmt=fmt, fontsize=10)

Rotulando contornos com strings arbitrárias usando um dicionário

Também podemos rotular contornos com strings arbitrárias usando um dicionário. Isso nos permitirá rotular os contornos com rótulos personalizados. Neste exemplo, usaremos uma lista de strings para rotular os contornos.

fig1, ax1 = plt.subplots()
CS1 = ax1.contour(X, Y, Z)

fmt = {}
strs = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh']
for l, s in zip(CS1.levels, strs):
    fmt[l] = s

ax1.clabel(CS1, CS1.levels[::2], inline=True, fmt=fmt, fontsize=10)

Usando um Formatter

Também podemos usar um formatter (formatador) para formatar os rótulos de contorno. Isso nos permitirá formatar os rótulos de uma maneira específica. Neste exemplo, usaremos um LogFormatterMathtext para formatar os rótulos.

fig2, ax2 = plt.subplots()
CS2 = ax2.contour(X, Y, 100**Z, locator=plt.LogLocator())
fmt = ticker.LogFormatterMathtext()
fmt.create_dummy_axis()
ax2.clabel(CS2, CS2.levels, fmt=fmt)
ax2.set_title("$100^Z$")

plt.show()

Resumo

Neste tutorial, aprendemos como criar rótulos de contorno em Matplotlib. Cobrimos algumas técnicas avançadas para criar rótulos de contorno personalizados, incluindo formatadores de nível personalizados, rotulando contornos com strings arbitrárias e usando um formatter (formatador) para formatar os rótulos de contorno. Essas técnicas podem ser úteis para criar visualizações que são informativas e esteticamente agradáveis.