我有一个数据集,我想用热图来表示(x,y位置)。有几个地区的密度比其他地区高得多。这导致了这些高密度区域完全洗掉了低密度区域的细节。在
我认为与2d直方图或等高线图相比,使用Gaussian KDE提供了最好的表示(而且看起来也最漂亮),所以更喜欢使用这种方法的解决方案。在
我无法发布图片,因为这个帐号的重复次数少于10次,但是here are some examples of what I've tried。在
我的代码片段是基于我在下面链接的已经发布的代码片段,而不是重新发布(有些代码段相当长),但是如果有人问我,我会编辑它们以包括它们。在
前几个基于Ivo Bosticky在这个问题中的代码:Efficient method of calculating density of irregularly spaced points。那里的图像是我追求的“风格”。 如上面链接的相册所示,由于网格尺寸较小,低密度区域很难辨认,没有真实的细节。较高的网格大小显示了一些斑点细节,但实际上不是从高密度到低密度的平滑过渡。将值放在logscale上会在较低的分辨率上洗掉整个事情,而高分辨率则会显示细节,但不会适当地混合网格。在
该相册中的第二对基于scipy.stats.gaussian_kde示例。更改gridsize似乎基本上没有效果,logscale再次将其洗刷干净。在
那么TLDR:我如何制作一个二维高斯KDE,在高密度和低密度区域平滑地显示细节?在
下面是一个例子来说明我的建议-这是基于this matplotlib example:
表示分散数据的最简单方法是使用散点图。当然,问题是,一旦达到某个点密度,散点图就不能提供进一步的信息。在这种情况下,我们使用基于某些KDE的直方图或热图。然而,这些方法总是删除数据集中不太密集区域的细节。在
因此,我的建议是用kde值来着色散点图。E、 g.作为
这里,
your_kde_value
是一个数组,包含散点图上KDE函数的值(即,它应该具有与your_x
和your_y
相同的形状。在结果可能如下(使用双变量正态分布中的10000个点样本:
如您所见,颜色信息提供了中心的所有细节,而我们仍然保留了外围点。在
相关问题 更多 >
编程相关推荐