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.