如何在pyqtgraph中复现Orange3散点图的「颜色区域」功能?
纯Python实现渐变背景散点图的相关解答
关于Orange3依赖C++扩展是否限制纯Python方案
Orange3用_grid_density这个C++扩展主要是为了提升大规模数据下的密度计算性能,但这不代表纯Python没法实现同款渐变背景散点图:
- 你可以用纯Python的科学计算库(比如
scipy.stats.gaussian_kde)来计算数据点的密度分布,再结合Matplotlib这类纯Python绘图库,把密度渲染成渐变背景后叠加散点。 - 这种纯Python方案完全可以打包成独立程序,对于游戏内实时生成的场景(数据量通常不会特别大),性能完全够用。
seaborn、bokeh对渐变背景散点图的支持情况
seaborn
完全支持,实现方式很灵活:
- 可以先调用
seaborn.kdeplot绘制填充式的密度渐变背景,再用seaborn.scatterplot在同一画布上叠加散点; - 也可以用
seaborn.jointplot,指定kind="scatter"并开启密度背景,快速生成带渐变底的散点图。
bokeh
同样支持,而且更适合实时交互场景(符合你游戏内实时生成的需求):
- 先通过计算得到数据的密度网格,用
LinearColorMapper把密度值映射成渐变色彩,绘制出背景热图; - 再在同一绘图对象上添加散点图层,就能实现带渐变背景的散点效果,bokeh的动态更新特性还能适配精灵移动时的实时刷新。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

