javascript - Plotly.js - 热图动画未显示

标签 javascript plotly

我正在尝试使用本教程的 Plotly 为热图制作动画 https://plot.ly/javascript/animations/#animating-many-frames-quickly 。到目前为止,我定义了一个矩阵 rho,包含 100 x 100 个条目,并使用 compute() 函数更新:

<!DOCTYPE html>
<html>

<head>
  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>

</head>
<body>
    <div id="graph" style="position: relative; width: 600px; height: 500px;"></div>

    <script>

    /* Define matrix that represents physical quantity */  

    var rho = [];
    for(var n=0; n<100; n++) {
        rho[n] = [];
        for(var l=0; l<100; l++) {
            rho[n][l] = n * l;
        }
    }

    var dummy = 1;

    var data = [
      {
        z: rho,
        type: 'heatmap'
      }
    ];

    Plotly.newPlot('graph', data);

    function compute(){
        dummy++;
        for(n = 0; n < 100; n++)
        {
            for(l = 0; l < 100; l++)
            {
            data[0].z[n][l] = Math.sin(0.2 * (n * l- 0.05 * dummy) );
            }
        } 
    }


    function update() {

        compute();

        Plotly.animate('graph', {data: [{z: rho,type: 'heatmap'}]},
        {transition: {duration: 0}, frame: {duration: 0, redraw: false}}
        )

    requestAnimationFrame(update);
    }

    requestAnimationFrame(update);

  </script>

</body>

</html>

页面将显示plot元素,Firefox终端/调试器将仅输出不相关的错误:

The character encoding of the HTML document was not declared. 

但是,图表不显示,更不用说动画了。我可以看到 rho 的值正在通过鼠标光标更新。

为什么动画不可见?

谢谢

最佳答案

您需要在update中定义rho。见下文。

var rho = [];
    for(var n=0; n<100; n++) {
        rho[n] = [];
        for(var l=0; l<100; l++) {
            rho[n][l] = n * l;
        }
    }

    var dummy = 1;

    var data = [
      {
        z: rho,
        type: 'heatmap'
      }
    ];

    function compute() {
        dummy++;
        for(n = 0; n < 100; n++)
        {
            for(l = 0; l < 100; l++)
            {
            data[0].z[n][l] = Math.sin(0.2 * (n * l- 0.05 * dummy) );
            }
        }
    }

    Plotly.newPlot('graph', data);
	
    function update() {
        compute();
        rho = data[0].z;
        Plotly.animate('graph', 
                       {data: [{z: rho, type: 'heatmap'}]}, 
                       {transition: {duration: 750}, 
                        frame: {duration: 1000, redraw: true}})
        requestAnimationFrame(update); 
    }

    requestAnimationFrame(update);
<head>
  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>

</head>
<body>
    <div id="graph" style="position: relative; width: 600px; height: 500px;"></div>

关于javascript - Plotly.js - 热图动画未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52895691/

相关文章:

javascript - 将 JSON.Stringified 数据插入 MongoDB

javascript - 如何获取特定元素的用户样式

javascript - 使用ajax和php获取浏览器的当前位置并将数据发送到db中

python - 如何使用plotly绘制标准密度曲线?

javascript - 对于 JavaScript 函数,此文档语法在 MDN 中意味着什么?

javascript - 添加事件监听器和中断

plotly - 在 Plotly 中使用面网格上的条形图和平均线

python-3.x - 如何在plotly中将hoverdata添加到fig.add_scatter的参数中

python - Plotly/如何更改 Plotly 中的默认调色板?

python - 如何在plotly3.6中对条形图进行排序?