Dipende davvero ciò che si desidera.
Il problema con la definizione di un cerchio nelle coordinate dei dati quando le proporzioni sono auto, è che si sarà in grado di ridimensionare la figura (o la sua finestra) e le scale di dati si allungheranno bene. Sfortunatamente, ciò significherebbe anche che la tua cerchia non è più un cerchio, ma un'ellisse.
Ci sono diversi modi per risolvere questo problema. In primo luogo, e la maggior parte semplicemente, si potrebbe risolvere il tuo rapporto di aspetto e poi mettere un cerchio sul terreno nei dati coordinate:
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 questo, si sarà in grado di zoom e pan intorno come per solito, ma la forma sarà sempre un cerchio.
Se si vuole solo mettere un cerchio su una figura, indipendente dalle coordinate di dati, in modo tale che panning e zoom di un asse non ha effetto sulla posizione e lo zoom sul cerchio, allora si potrebbe fare qualcosa di simile:
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()
Questo è mpl abbastanza avanzato, ma anche così, penso che sia abbastanza leggibile.
HTH,
L'ovvia n00b-lution consiste nel tracciare ellissi e modificarle manualmente per assomigliare a cerchi. Là * deve * essere un modo più pitonico ... – benkay
Ha bisogno di essere in coordinate di dati? – pelson
Non sono abbastanza esperto per capire davvero la tua domanda. Non ci sono * requisiti * per una soluzione a questo, quindi suppongo che un luogo di punti che sembra equidistante da un punto dato sulla trama (per ottenere una sorta di matematica-y) sarebbe del tutto sufficiente. – benkay