我试图绘制通过蒙特卡洛运行计算的概率分布。我使用sp.stats.gaussian_kde()来确定与plt.scatter()一起使用的点密度来绘制分布。当我将这段代码用于数据时:
xy = np.vstack([state_error_x, state_error_y])
error_density_xy = gaussian_kde(xy)(xy)
idxy = error_density_xy.argsort()
xyerror_density_x, xyerror_density_y, xyerror_density_xy = state_error_x[idxy], state_error_y[idxy], error_density_xy[idxy]
plt.figure(7, figsize=(12, 9))
plt.title('State Errors - Position')
plt.subplot(221)
plt.scatter(xyerror_density_x, xyerror_density_y, c=xyerror_density_xy, edgecolor='')
plt.xlabel('X ($m$)')
plt.ylabel('Y ($m$)')
plt.axis('equal')
对于每个分布重复,我最终得到以下图:
这看起来是正确的。但是当我用不同的发行版做同样的事情时,使用这个代码:
rtn_xy = np.vstack([state_error_rtn_x, state_error_rtn_y])
rtn_error_density_xy = gaussian_kde(rtn_xy)(rtn_xy)
rtn_idxy = rtn_error_density_xy.argsort()
rtn_xyerror_density_x, rtn_xyerror_density_y, rtn_xyerror_density_xy = state_error_x[rtn_idxy], state_error_y[rtn_idxy], rtn_error_density_xy[rtn_idxy]
plt.figure(9, figsize=(12, 9))
plt.title('State Errors - Position')
plt.subplot(221)
plt.scatter(rtn_xyerror_density_x, rtn_xyerror_density_y, c=rtn_xyerror_density_xy, edgecolor='')
plt.xlabel('R ($m$)')
plt.ylabel('T ($m$)')
plt.axis('equal')
我最终得到以下情节:
第二组图在这里没有明显的密度分散,并且在没有被许多点紧密包围的区域中显示非常密集的点,并且在密集区域中显示非密集点。当然,并不是很多这些密度都是错误的,但它足够引人注目,肯定会以负面的方式改变整体结果。
有关如何解决此问题的任何想法?谢谢你的帮助。