Data Visualization

Dibujo Eficiente de Círculos en Matplotlib

Spread the love

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

  1. Usando matplotlib.patches.Circle
  2. Trazando desde la Ecuación del Círculo
  3. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *