首页 > 解决方案 > 如何从两侧模糊形状?

问题描述

请问如何在下面的脚本中从两边模糊这个环?

import numpy as np
import matplotlib.pyplot as plt

n, radii = 50, [.7, .95]
theta = np.linspace(0, 2*np.pi, n, endpoint=True)
xs = np.outer(radii, np.cos(theta))
ys = np.outer(radii, np.sin(theta))

# in order to have a closed area, the circles
# should be traversed in opposite directions
xs[1,:] = xs[1,::-1]
ys[1,:] = ys[1,::-1]

ax = plt.subplot(111, aspect='equal')
ax.fill(np.ravel(xs), np.ravel(ys), edgecolor='#348ABD')

plt.show()

标签: python-3.xmatplotlib

解决方案


这是一种创建图像并应用高斯模糊的方法:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
from scipy import ndimage

rad1, rad2 = .7, .95
rad_max = 1.2 
x = np.linspace(-rad_max, rad_max, 500)
y = np.linspace(-rad_max, rad_max, 500)
r = np.sqrt(x[:, np.newaxis] ** 2 + y[np.newaxis, :] ** 2)
img = np.array((r > rad1) & (r < rad2), dtype=float)
img = ndimage.gaussian_filter(img, sigma=20, mode='nearest')
cmap = LinearSegmentedColormap.from_list('', ['white', 'dodgerblue'])
plt.imshow(img, extent=[-rad_max, rad_max, -rad_max, rad_max], cmap=cmap)
plt.show()

结果图


推荐阅读