在Python Matplotlib中,在一个轴上清晰地显示多个(密集)散点图

在Python Matplotlib中,在一个轴上清晰地显示多个(密集)散点图,python,matplotlib,Python,Matplotlib,我正在尝试使用Python和Matplotlib显示散点图,这些散点图绘制属于几个类别之一的数据点。我决定用一个图例来表示类别的颜色,这使得在使用大到可以很容易看到颜色的符号和小到不能过度覆盖彼此的符号之间进行艰难的权衡。(至少有几千分) 然而,我也遇到了另一个问题。我将类别划分为一组numpy数组,然后逐一绘制。这会使它看起来像是上一个类别中有更多的点,因为它是最后绘制的,所以其点位于顶部。如果我一次将所有类别相对地混合在一起,我就不会有这个问题,但我无法对这些点进行颜色编码。增加窗口大小有帮

我正在尝试使用Python和Matplotlib显示散点图,这些散点图绘制属于几个类别之一的数据点。我决定用一个图例来表示类别的颜色,这使得在使用大到可以很容易看到颜色的符号和小到不能过度覆盖彼此的符号之间进行艰难的权衡。(至少有几千分)

然而,我也遇到了另一个问题。我将类别划分为一组numpy数组,然后逐一绘制。这会使它看起来像是上一个类别中有更多的点,因为它是最后绘制的,所以其点位于顶部。如果我一次将所有类别相对地混合在一起,我就不会有这个问题,但我无法对这些点进行颜色编码。增加窗口大小有帮助,但不能完全解决问题。有人知道缓解这种情况的好方法吗?是否有某种方法可以将数据集“混洗”在一起,或为单个绘图中的点指定不同的颜色?我可能不得不改变我的方法来可视化这些数据


您是否考虑过只使用4个绘图而不是一个绘图?我认为你的数据有点太多,无法合理地放入一张图表中。您可能还想考虑切换到日志级别(除非您已经使用DBS)。有几种不同的选项,但是最有效的选项都涉及以某种方式减少/分组数据。在情节中你最想强调什么?1) 每个类别的包络线(例如,类似于“滚动最大值”),2)给定频率下的点数(例如,内核密度样式直方图),或3)每个频率间隔下的“峰值高度”分布(例如,多个频率箱中每个类别的箱线图/小提琴图)?如果您只想快速破解(这将导致一个非常混乱的绘图!)您始终可以使每个类别部分透明。但是最终结果仍然会非常混乱。或者,如果您只想在绘图中“混洗”图层,您可以执行类似于
ax.scatter的操作(all_x,all_y,c=category,marker='*',cmap=gist\u heat-or-something)
。不过,您仍然会有一个凌乱的绘图,您可能需要将
所有的\u x
等数组洗牌。将绘图类型更改为长方体和胡须怎么样?