spherical_kde
0.1.2
这些软件包使您可以在球体上进行基本的内核密度估计。欢迎改进/扩展的建议。
基本原则是用von mises-fisher分布替换内核密度估计中使用的传统高斯函数。
带宽估计仍然很粗糙。
导入numpyfrom spherical_kde导入sphericalkdeimport matplotlib.pyplot作为pltimport cartopy.crsfrom matplotlib.gridspec导入gridspec导入gridspec,gridspececfromsubplotspec#选择一个用于确定性的plotnumpy.random.random.random.seed(seed = 0)的种子, (10,10))gs_vert = gridspec(3,1)gs_lower = gridspecfromsubplotspec(1,2,subplot_spec = gs_vert [1])图.add_subplot(gs_vert [gs_vert [0],projection = cartopy = cartopy.crs.mollweide()) add_subplot(gs_lower [0],投影= CATTOPY.CRS.ORTROGRACH())图.add_subplot(gs_lower [1],投影= CATTOPY.CRS.ORTRAGRAGY(-10,45)) = cartopy.crs.platecarree())#选择样品的参数= 100pi = numpy.pi#生成以(1,1)+/- 0.3 radianstheta_samples生成一些样品,size = nsamples)phi_samples = numpy.random.normal(loc = 1,比例= 0.3,size = nsamples)phi_samples = numpy.mod.mod(phi_samples,pi*2)kde_green = sphericalkde(sphericalkde) ON(-1,1)+/- 0.4 radianstheta_samples = numpy.random.normal(loc = 1,scale = 0.4,size = nsamples)phi_samples = numpy.random.normal.normal(loc = -1,scale = 0.4,scale = 0.4,size = 0.4,size = 0.4 nsamples)phi_samples = numpy.mod(phi_samples, pi*2)kde_red = SphericalKDE(phi_samples, theta_samples)# Generate a spread of samples along latitude 2, height 0.1theta_samples = numpy.random.normal(loc=2, scale=0.1, size = nsamples)phi_samples = numpy.random.rand.uriform(low = -pi/2,high = pi/2,size = nsamples)phi_samples = numpy.mod.mod(phi_samples,pi*2)kde_blue = sphericalkde(sphericalkde) = 0.1)对于图。轴:ax.Set_global()ax.gridlines()ax.coastlines(lineWidth = 0.1)kde_green.plot(ax,'g'g'g'g'g'g') 'r')kde_blue.plot(ax,'b')#保存到plotfig.tight_layout()fic.savefig('plot.png')