【发布时间】:2022-11-27 02:49:28
【问题描述】:
渲染此图像/热图后,不应进行任何计算,并且移动滑块应该是即时的。相反,移动滑块是非常慢(每个位置之间滞后 1 秒),并使用最大 CPU %。
如何使用 Plotly JS 进行更快的滑块渲染?
var z = [], steps = [], i;
for (i = 0; i < 500; i++)
z.push(Array.from({length: 600}, () => Math.floor(Math.random() * 100)));
for (i = 0; i < 100; i++)
steps.push({ label: i, method: 'restyle', args: ['line.color', 'red']});
var data = [{z: z, colorscale: 'YlGnBu', type: 'heatmap'}];
var layout = {title: '', sliders: [{
pad: {t: 5},
len: 1,
x: 0,
currentvalue: {
xanchor: 'right',
prefix: 'i: ',
font: {
color: '#888',
size: 20
}
},
steps: steps
}]};
Plotly.newPlot('myDiv', data, layout);
<script src="https://cdn.plot.ly/plotly-2.16.2.min.js"></script>
<div id="myDiv"></div>
【问题讨论】:
-
想法:我们可以将滑块移动到一个单独的 div,没有 plot/graph 吗?我们将使用两个
Plotly.newPlot,一个用于热图,另一个没有任何数据,只有滑块。这可能吗?我做不到后者。 -
这是因为您将
method: 'restyle'与错误的args一起使用(没有线,但它似乎和有很多线一样慢,我怀疑它默认为重新设置 z 数据点的样式),这是减缓。但是你想做什么?它与不透明度问题有关吗? -
@EricLavault 是的,一个滑块将更改(此热图的)不透明度,第二个滑块将修改一个参数,该参数将在每个“onchange”事件上通知服务器(使用 AJAX /
fetch)。我正在寻找仅 JS 的解决方案(这部分没有 Python)。我正在开放赏金,因为我对实现它的标准 plotly.js 方法感到好奇。
标签: javascript performance plotly plotly.js