You need to enable JavaScript to run this app. 使用Plotly的create_distplot绘制大量数据时内核卡顿如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

使用Plotly的create_distplot绘制大量数据时内核卡顿如何解决?

问题根源

create_distplot 运行卡顿/内核挂死的核心原因是两个高耗时操作:

  • 默认开启的核密度估计(KDE)在计算25万级数据时,默认算法时间复杂度为O(n²),会占用大量CPU和内存资源
  • 未手动指定直方图bin数时,程序会自动计算生成过多个bin,加上默认开启的底部rug样本条,会生成数千个矢量图形元素,渲染时占用极高资源导致内核无响应

解决方案

方案1:优化原有create_distplot参数

关闭不需要的计算项、手动限制bin数量,直接降低计算和渲染开销:

import numpy as np
import plotly.figure_factory as ff

x = np.fromfile("./data.txt", dtype="int64")
hist_data = [x]
group_labels = ['distplot']

fig = ff.create_distplot(hist_data, group_labels, 
                         bin_size=5, # 根据数据范围调整,数值越大计算量越小
                         show_curve=False, # 关闭KDE曲线,节省大量计算资源
                         show_rug=False) # 关闭底部rug样本条,25万点的样本条无参考价值还会卡死
fig.show()

方案2:对数据抽样后绘图

分布形态不会随样本量减少发生明显变化,可随机抽取10%~20%的样本绘图,性能提升10倍以上:

# 读取数据后加一行抽样即可,其他逻辑不变
x = np.fromfile("./data.txt", dtype="int64")
x = np.random.choice(x, size=50000, replace=False) # 抽取5万个样本,不影响分布判断

方案3:替换为性能更好的新版绘图接口

create_distplot 已经被Plotly官方标记为弃用接口,推荐使用性能优化过的plotly.express.histogram,原生支持大数量渲染,效果和distplot一致:

import numpy as np
import plotly.express as px

x = np.fromfile("./data.txt", dtype="int64")
# 如需抽样可加:x = np.random.choice(x, size=25000, replace=False)
fig = px.histogram(x=x, 
                   nbins=100, # 手动指定bin数量
                   histnorm='probability density',
                   marginal='violin') # 可选添加边缘分布,完全覆盖原有distplot的展示效果
fig.show()

内容的提问来源于stack exchange,提问作者Vetedde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 08:39:01