Matplotlib ofrece varias maneras de visualizar círculos, cada una con sus propias fortalezas y debilidades. Este artículo explora tres métodos prominentes, comparando su eficiencia y adecuación para diferentes aplicaciones.
Tabla de Contenido
- Usando
matplotlib.patches.Circle
- Trazando desde la Ecuación del Círculo
- Aproximando con un Gráfico de Dispersión
1. Usando matplotlib.patches.Circle
Este es el método más directo y generalmente preferido. La clase matplotlib.patches.Circle
crea un objeto círculo que puede agregarse directamente a su gráfica. Es eficiente y produce gráficos vectoriales limpios.
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') # Asegura que el círculo aparezca circular
plt.title('Círculo usando matplotlib.patches.Circle')
plt.show()
2. Trazando desde la Ecuación del Círculo
Un círculo puede definirse por su ecuación: (x – h)² + (y – k)² = r², donde (h, k) es el centro y r es el radio. Podemos generar coordenadas x e y que satisfagan esta ecuación y trazarlas.
import matplotlib.pyplot as plt
import numpy as np
h, k = 0, 0
r = 2
theta = np.linspace(0, 2 * np.pi, 200) # Más puntos para un círculo más 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 desde la Ecuación')
plt.gca().set_aspect('equal')
plt.show()
3. Aproximando con un Gráfico de Dispersión
Un gráfico de dispersión puede aproximar un círculo trazando muchos puntos generados aleatoriamente dentro del radio del círculo. Este método es menos eficiente y menos preciso que los dos anteriores, pero demuestra un enfoque 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) # Ajustar 's' para el tamaño del punto
plt.xlabel("x")
plt.ylabel("y")
plt.title('Aproximación de Círculo usando Gráfico de Dispersión')
plt.gca().set_aspect('equal')
plt.show()
El método matplotlib.patches.Circle
se recomienda generalmente por su eficiencia y claridad. Los otros métodos ofrecen visualizaciones alternativas y perspectivas sobre diferentes técnicas de trazado.