【发布时间】:2013-10-19 04:03:09
【问题描述】:
我正在生成约 30 万个数据点的散点图,但我遇到的问题是在某些地方过于拥挤,以至于看不到任何结构 - 所以我有了一个想法!
我想让绘图为最密集的部分生成等高线图,并用 scatter() 数据点留下不太密集的区域。
所以我尝试单独计算每个数据点的最近邻距离,然后当该距离达到特定值时,绘制轮廓并填充它,然后当它达到更大的值(密度较小)只是做分散......
我已经尝试并失败了几天,我不确定传统的等高线图是否适用于这种情况。
我会提供代码,但它太乱了,可能只会混淆问题。而且它的计算量如此之大,如果它确实工作,它可能只会让我的电脑崩溃!
提前谢谢大家!
附言我一直在寻找和寻找答案!我相信它甚至不可能出现所有结果!
编辑:所以这样做的想法是查看某些特定点在 300k 样本的结构中的位置。这是一个示例图,我的观点分散在三个差异中。颜色。
我将尝试从我的数据中随机抽取 1000 个数据点并将其作为文本文件上传。 干杯堆垛机。 :)
编辑:嘿,
这是一些 1000 行的示例数据 - 只有两列 [X,Y](或上图中的 [g-i,i])以空格分隔。谢谢你们!
the data
【问题讨论】:
-
根据这些值的拥挤程度,您可以通过
scatter(x, y, alpha=0.1)或一些合适的小值来梳理一些结构。按照你的建议,我会建立一个内核密度估计(参见scipy.stats.kde)。 -
为什么不使用二维直方图来显示数据?
-
@FriskyGrub 您可以只提供与您的真实数据具有相同类型/形状/等的随机数据 - 您并不总是需要首先发布生成真实数据的复杂步骤地方。让我们更容易提供对您有用的答案。
-
@RutgerKassies - 这并没有真正以有意义的方式显示该数据,并且受到分箱问题的影响。此外,很难在打印输出中正确表示它。
-
@FriskyGrub “这并没有真正以有意义的方式显示该数据,并且存在分箱问题。此外,很难在打印输出中正确表示它。” - 你是什么意思它没有意义?直方图是传达分布质量所在位置的一种完全有效的方式。通过在 300,000 个云中绘制每个 x,y 点的确切位置绝对没有任何好处,无论如何它们都相互重叠。找到在打印输出上看起来不错的颜色图并不难。
标签: python numpy matplotlib scipy contour