Matplotlib 如何选择在密集散点图中覆盖哪些标记?

How does Matplotlib choose which markers to overlay in a dense scatterplot?

我正在处理一个具有 x、y 和 z 的相当大的数据集。 x 和 y 放在散点图上,z 设置为颜色栏值。有 24 个不同的列,每列有 ~20000 个点。我试图确定与 y 值相关的主要 z 值,但我不想被生成的图像中看到的清晰着色所误导。鉴于 1 列中有这么多标记,我想知道 Matplotlib 如何确定哪些标记覆盖在其他标记上。

这可能很难想象,所以这是我的代码和输出的图像。如果我们查看 ~24 小时,我们会看到主要的低海拔着色,但我不想假设高海拔被低海拔值覆盖。假设低海拔在那个时间段内占主导地位是错误的,还是有什么我应该试着弄清楚的?请记住,该列中大约有 20000 个点,因此掩盖的可能性不为零。

我还没有找到关于这个问题的明确答案,所以我将不胜感激任何帮助

您的问题的实质似乎在您的陈述中,“我正在尝试确定与 y 值相关的主要 z 值。”这是一个关于任何给定 y 值的 z 值的相对频率的问题(隐式地针对固定的 x 值)。此外,数据集的大小从根本上限制了您对使用颜色条方案显示 z 值的确定性。

我的建议是为每个 x 值生成 y 和 z 的二维直方图,以显示任何给定 y 的主导 z。您可以使用 hist2d to generate a color-coded 2D histogram. Or, if you prefer a "3D" display of the same kind of data, you can make a 3D bar graph.

显然,此方法的缺点是将显示的维度增加一维。这可能是不可接受的,但通过凭经验查看几个 x 值的结果,您可能会得到原始问题的答案,即颜色条是否是 z-dominance.[=11= 的有效指标]