我有一个散点图,它绘制了两个不同数据集中的大量点。在某些地区,有大量的点,所以即使有一个非常低的alpha(例如α= 0.1),你也无法透过质量。但在那个阿尔法,你几乎看不到稀疏区域的点。有没有办法绑定堆叠点的alpha或以某种方式使背景在密集区域下可见而不清除稀疏区域?
代码段如下所示:
# Code to populate the datasets not included.
fig, ax = plt.subplots()
ax.scatter(x1, y1, s=12, color='red')
ax.scatter(x2, y2, s=12, color='blue', alpha=0.1)
# Plus code to do xlabels and such not included.
产生这个:
正如你所看到的,很难看到底部红腿的边界,仍然会使顶部的蓝色腿部打出来。
有没有办法创造这种效果?
提前致谢。
修改
一个好的建议似乎是使用hexbin而不是scatter。这似乎很有希望,但颜色仍然不能很好地融合。例如,
ax.hexbin(x1, y1, cmap='Reds', mincnt=1, vmax=100)
ax.hexbin(x2, y2, cmap='Blues', mincnt=1, vmax=50, alpha=0.8, linewidths=0)
的产率:
让那些蓝调和红色合并真的很不错。也许每个像素可能来自一个数据集的R值,另一个数据集中的B值或其他东西?但它似乎不是hexbin中的一个选项。
修改
应用Thomasillo的答案后:
谢谢,我认为它看起来比原版更好。
答案 0 :(得分:1)
1)为了改善hexbin图,可以使用选项bins ='log'。这会以对数方式计算六边形分箱的颜色,有效地使较低的数字与较高的数字相比更好。
2)自己计算每个数据集的密度。并且从两种密度产生颜色,例如通过例如密度。让一个密度影响红色,另一个密度影响蓝色通道。使用imshow绘制结果。
像
这样的东西@Override
public void run(){
// need to call from here Foo() function - it has to run on the main thread
}