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')