对于大量数据,matplotlib散点图是否缓慢?

cqc*_*991 8 python matplotlib pandas

我有一个包含属性x,y的数据集,它们可以在xy表面绘制.

最初,我使用代码

df.plot(kind='scatter', x='x', y='y', alpha=0.10, s=2)
plt.gca().set_aspect('equal')
Run Code Online (Sandbox Code Playgroud)

代码非常快,数据大小约为50000.

最近,我使用了一个新的数据集,大小约为250万.散点图变得慢得多.

我想知道,如果这是预期的行为,我是否可以采取任何措施来提高情节速度?

Syn*_*cus 5

是的。原因是超过一千个点的散点图没有什么意义,所以没有人费心去优化它。您最好使用其他一些数据表示形式:

  • 如果您的点分布在各处,则为热图。使热图单元变得非常小
  • 绘制某种近似分布的曲线,也许将 y 与 x 相关联。请务必提供一些置信值或以其他方式描述分布;例如,对我来说,y为每个x(或一系列x)构建一个带有胡须的盒子并将它们放在同一个网格上通常效果很好。
  • 减少数据集。评论中的 @sascha 建议随机抽样,这绝对是个好主意。根据您的数据,也许有更好的方法来选择代表点。