O Matplotlib oferece diversas maneiras de visualizar círculos, cada uma com suas próprias vantagens e desvantagens. Este artigo explora três métodos proeminentes, comparando sua eficiência e adequação para diferentes aplicações.
Sumário
- Usando
matplotlib.patches.Circle
- Plotando a partir da Equação da Circunferência
- Aproximando com um Gráfico de Dispersão
1. Usando matplotlib.patches.Circle
Este é o método mais direto e geralmente preferido. A classe matplotlib.patches.Circle
cria um objeto círculo que pode ser adicionado diretamente ao seu gráfico. É eficiente e produz gráficos vetoriais limpos.
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
fig, ax = plt.subplots()
center_x, center_y = 0, 0
radius = 2
circle = Circle((center_x, center_y), radius, facecolor='skyblue', edgecolor='black', linewidth=2)
ax.add_patch(circle)
ax.set_xlim([-3, 3])
ax.set_ylim([-3, 3])
ax.set_aspect('equal') # Garante que o círculo apareça circular
plt.title('Círculo usando matplotlib.patches.Circle')
plt.show()
2. Plotando a partir da Equação da Circunferência
Uma circunferência pode ser definida por sua equação: (x – h)² + (y – k)² = r², onde (h, k) é o centro e r é o raio. Podemos gerar coordenadas x e y que satisfazem esta equação e plotá-las.
import matplotlib.pyplot as plt
import numpy as np
h, k = 0, 0
r = 2
theta = np.linspace(0, 2 * np.pi, 200) # Mais pontos para um círculo mais suave
x = h + r * np.cos(theta)
y = k + r * np.sin(theta)
plt.plot(x, y)
plt.xlabel("x")
plt.ylabel("y")
plt.title('Círculo a partir da Equação')
plt.gca().set_aspect('equal')
plt.show()
3. Aproximando com um Gráfico de Dispersão
Um gráfico de dispersão pode aproximar uma circunferência plotando muitos pontos gerados aleatoriamente dentro do raio da circunferência. Este método é menos eficiente e menos preciso do que os dois anteriores, mas demonstra uma abordagem diferente.
import matplotlib.pyplot as plt
import numpy as np
center_x, center_y = 0, 0
radius = 2
num_points = 500
angles = np.random.uniform(0, 2 * np.pi, num_points)
radii = np.random.uniform(0, radius, num_points)
x = center_x + radii * np.cos(angles)
y = center_y + radii * np.sin(angles)
plt.scatter(x, y, s=5) # Ajuste 's' para o tamanho do ponto
plt.xlabel("x")
plt.ylabel("y")
plt.title('Aproximação de Círculo usando Gráfico de Dispersão')
plt.gca().set_aspect('equal')
plt.show()
O método matplotlib.patches.Circle
é geralmente recomendado por sua eficiência e clareza. Os outros métodos oferecem visualizações alternativas e insights sobre diferentes técnicas de plotagem.