Realmente no depende de lo que desee.
El problema de definir un círculo en las coordenadas de datos cuando la relación de aspecto es automática, es que podrá cambiar el tamaño de la figura (o su ventana), y las escalas de datos se estirarán bien. Desafortunadamente, esto también significa que tu círculo ya no es un círculo, sino una elipse.
Existen varias formas de solucionar esto. En primer lugar, y lo más simplemente, se podría arreglar su relación de aspecto y luego poner un círculo en la trama de datos de coordenadas:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = plt.axes()
ax.set_aspect(1)
theta = np.linspace(-np.pi, np.pi, 200)
plt.plot(np.sin(theta), np.cos(theta))
plt.show()
Con esto, usted será capaz de hacer zoom y desplazarse por según de costumbre, pero la forma siempre será un círculo.
Si lo que desea es poner un círculo en una figura, independiente de las coordenadas de datos, de tal manera que encuadre y zoom de una ejes no afectó la posición y el zoom en el círculo, entonces se podría hacer algo como:
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = plt.axes()
patch = mpatches.Circle((325, 245), 180, alpha=0.5, transform=None)
fig.artists.append(patch)
plt.show()
Ésta es MPL bastante avanzada, pero aún así, creo que es bastante fácil de leer.
HTH,
El n00b-lution obvio es trazar puntos suspensivos y ajustarlos manualmente para que se asemejen a los círculos. Hay * debe * ser una manera más pythonic ... – benkay
¿Necesita estar en las coordenadas de datos? – pelson
No soy lo suficientemente versado como para entender realmente tu pregunta. No hay * requisitos * para una solución a esto, así que supongo que un locus de puntos que se ve equidistante de un punto dado en la trama (para obtener una especie de matemática) sería totalmente suficiente. – benkay