Aquí es función ejemplo usando la idea del post de 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-')
Y aquí es lo que se obtiene cuando se ejecuta
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#
Me gusta el enfoque, lo había considerado yo mismo, pero lo rechacé por algunas razones. 1. No funciona en parcelas de registro y registro (no es que los parches funcionen bien, pero lo intentan) 2. Requiere conocimiento previo de los límites de la parcela (aunque esto se puede solucionar) 3. Es bastante lento. Aún así, por el momento, rodaré con eso. – keflavich
Supongo que el origen del imshow debe estar en la esquina inferior izquierda, 'plt.imshow (im.T, cmap = cmap, extent = xr + yr, origin =" lower ")'. – ImportanceOfBeingErnest