Introdução
Neste laboratório, aprenderemos como criar um polígono preenchido usando Matplotlib em Python. Usaremos o floco de neve de Koch (Koch snowflake) como exemplo de polígono.
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ê.
Importar Bibliotecas
Antes de começarmos, vamos importar as bibliotecas necessárias.
import matplotlib.pyplot as plt
import numpy as np
Definir a Função do Floco de Neve de Koch
Em seguida, definiremos uma função para gerar o floco de neve de Koch. A função recebe dois parâmetros: a profundidade de recursão e o fator de escala.
def koch_snowflake(order, scale=10):
"""
Retorna duas listas x, y de coordenadas de pontos do floco de neve de Koch.
Parâmetros
----------
order : int
A profundidade de recursão.
scale : float
A extensão do floco de neve (comprimento da aresta do triângulo base).
"""
def _koch_snowflake_complex(order):
if order == 0:
## initial triangle
angles = np.array([0, 120, 240]) + 90
return scale / np.sqrt(3) * np.exp(np.deg2rad(angles) * 1j)
else:
ZR = 0.5 - 0.5j * np.sqrt(3) / 3
p1 = _koch_snowflake_complex(order - 1) ## start points
p2 = np.roll(p1, shift=-1) ## end points
dp = p2 - p1 ## connection vectors
new_points = np.empty(len(p1) * 4, dtype=np.complex128)
new_points[::4] = p1
new_points[1::4] = p1 + dp / 3
new_points[2::4] = p1 + dp * ZR
new_points[3::4] = p1 + dp / 3 * 2
return new_points
points = _koch_snowflake_complex(order)
x, y = points.real, points.imag
return x, y
Gerar um Polígono Preenchido
Agora, podemos gerar um polígono preenchido usando a função fill(). Usaremos a função do floco de neve de Koch para gerar as coordenadas do polígono.
x, y = koch_snowflake(order=5)
plt.figure(figsize=(8, 8))
plt.axis('equal')
plt.fill(x, y)
plt.show()
Personalizar o Polígono
Podemos personalizar as cores e a espessura da linha (linewidth) do polígono usando argumentos de palavra-chave na função fill().
x, y = koch_snowflake(order=2)
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(9, 3),
subplot_kw={'aspect': 'equal'})
ax1.fill(x, y)
ax2.fill(x, y, facecolor='lightsalmon', edgecolor='orangered', linewidth=3)
ax3.fill(x, y, facecolor='none', edgecolor='purple', linewidth=3)
plt.show()
Resumo
Neste laboratório, aprendemos como criar um polígono preenchido usando Matplotlib em Python. Usamos o floco de neve de Koch como exemplo de polígono e demonstramos como personalizar o polígono com diferentes cores e espessuras de linha (linewidths).