Здесь функция Пример использования идеи от должности Алекса
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-')
А вот что вы получаете, когда вы запускаете
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#
Мне нравится подход - я сам это рассмотрел, но отклонил его по нескольким причинам. 1. Он не работает на логарифмических графиках (не для того, чтобы патчи работали хорошо, но они стараются) 2. Для этого требуется предварительное знание границ сюжета (хотя это можно обойти) 3. Это довольно медленно. Тем не менее, на данный момент, я справлюсь с этим. – keflavich
Я предполагаю, что происхождение imshow должно быть в левом нижнем углу: 'plt.imshow (im.T, cmap = cmap, extent = xr + yr, origin =" lower ")'. – ImportanceOfBeingErnest