Ecco funzione esempio, utilizzando l'idea dal post di Alex
import matplotlib.pyplot as plt,numpy as np
def gauplot(centers, radiuses, xr=None, yr=None):
nx, ny = 1000.,1000.
xgrid, ygrid = np.mgrid[xr[0]:xr[1]:(xr[1]-xr[0])/nx,yr[0]:yr[1]:(yr[1]-yr[0])/ny]
im = xgrid*0 + np.nan
xs = np.array([np.nan])
ys = np.array([np.nan])
fis = np.concatenate((np.linspace(-np.pi,np.pi,100), [np.nan]))
cmap = plt.cm.gray
cmap.set_bad('white')
thresh = 3
for curcen,currad in zip(centers,radiuses):
curim=(((xgrid-curcen[0])**2+(ygrid-curcen[1])**2)**.5)/currad*thresh
im[curim<thresh]=np.exp(-.5*curim**2)[curim<thresh]
xs = np.append(xs, curcen[0] + currad * np.cos(fis))
ys = np.append(ys, curcen[1] + currad * np.sin(fis))
plt.imshow(im.T, cmap=cmap, extent=xr+yr)
plt.plot(xs, ys, 'r-')
Ed ecco quello che si ottiene quando si esegue
gauplot([(0,0), (2,3), (5,1), (6, 7), (6.1, 6.1)], [.3,. 4, .5, 1, .4], [-1,10], [-1,10])
# centers of circles # radii of circles#
Mi piace l'approccio - l'avevo considerato anch'io, ma l'ho rifiutato per alcuni motivi. 1. Non funziona sui grafici di log-log (non che le patch funzionino bene, ma ci provano) 2. Richiede una conoscenza preliminare dei limiti della trama (sebbene questo possa essere risolto) 3. è piuttosto lento. Eppure, per il momento, me ne vado. – keflavich
Immagino che l'origine dell'Imshow dovrebbe essere nell'angolo in basso a sinistra, 'plt.imshow (im.T, cmap = cmap, extent = xr + yr, origin =" lower ")'. – ImportanceOfBeingErnest