首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在同一个html页面中显示两个图表

如何在同一个html页面中显示两个图表
EN

Stack Overflow用户
提问于 2019-05-06 08:22:28
回答 1查看 67关注 0票数 0

我正在做一个项目,我应该展示两种图表:

  • 实时图表和我正在使用smoothie.js库来实现这个功能。
  • 这是一个带有缩放选项的普通图表,为此我使用了canvas。

当它显示在smoothie.js下面的代码中时,在body标记上使用一个"onload“:

代码语言:javascript
复制
  <!DOCTYPE html>
  <meta charset="utf-8">
  <html>
        <head>
              <title>Pression en temps réel</title>
              <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

               <script type="text/javascript" src="smoothie.js"></script>
               <script type="text/javascript" src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>

               <script type="text/javascript">

               window.bufferX = [];

               setInterval(function () {

            if( typeof lastid == 'undefined' ) {
                $.get( "../be.php/lastid_1", function( dataA ) {
                 lastid = dataA[0].id_x+1;  
                })
            }
            else {
                $.get( "../be.php/1&"+lastid, function( dataB ) {
                     var i =0;
                     var j=0;

                     if( typeof counter == 'undefined' ) {
                            counter = 0;
                        }
                    if( typeof pck_prev == 'undefined' ) {
                                pck_prev = -1;
                            }

                    lastid = dataB[0].last_id;

                     for(i=0;i<dataB.length;i++) {

                        for(j=0;j<dataB[i].data.length;j++) {
                            if(dataB[i].data[j] !== "" && dataB[i].data[j] !== 0 && typeof  dataB[i].data[j] !== 'undefined' && pck_prev !== dataB[i].pck) {
                                window.bufferX.push(dataB[i].data[j]);
                            }
                        }
                        pck_prev = dataB[i].pck;
                     }
                     if(typeof window.bufferX[counter] == 'undefined') {
                       data_p.append(new Date().getTime(), window.bufferX[counter-1]);
                     }
                })
            } 
        },3000);



          var data_p = new TimeSeries();
          setInterval(function() {

           if(window.bufferX.length>50 && counter <window.bufferX.length)
                                 {

                                     if( typeof counter == 'undefined' ) {
                                        counter = 0;
                                    }

                                    else {
                                            data_p.append(new Date().getTime(), window.bufferX[counter]);
                                            counter++;
                                    } 
                                   }
          }, 250);       

  function createTimeline() {
    var chart = new SmoothieChart({responsive: true});
    chart.addTimeSeries(data_p, { strokeStyle: 'rgba(0, 255, 0, 1)', fillStyle: 'rgba(0, 255, 0, 0.2)', lineWidth: 4 });
    chart.streamTo(document.getElementById("chart"), 250);
  }

</script>
<script type="text/javascript">
      window.onload = function () {

        var chart = new CanvasJS.Chart("chartContainer",
        {
          zoomEnabled: true, 
          title:{
            text: "Try Zooming And Panning" 
          },
          axisY:{
            includeZero: false
          },
          data: data,  // random generator below

       });

        chart.render();
      }

        var limit = 1000;    //increase number of dataPoints by increasing this
        var y = 0;
        var data = []; var dataSeries = { type: "line" };
        var dataPoints = [];
        for (var i = 0; i < limit; i += 1) {
            y += (Math.random() * 10 - 5);
             dataPoints.push({
              x: i - limit / 2,
              y: y                
               });
            }
         dataSeries.dataPoints = dataPoints;
         data.push(dataSeries);               

       </script>
       </head>
  <body onload="createTimeline()">

           <canvas id="chart" style="width:100%; height:700px;"></canvas>
           <div id="chartContainer" style="height: 700px; width: 100%;"> 
                   </div>
   </body>
  </html>

问题是,如果我从body标记中删除onload,我只会得到画布图,如果我允许它,我只会得到实时的时间图。

我希望这两个图表都显示在我的网页上。

感谢您的阅读。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-06 08:31:41

window.onload<body onload="yourfunction();">是使用同一事件的不同方式,您使用的是这两种方式,这导致了问题的发生。解决此问题的最简单方法是,您应该在一个事件中用window.onload或body标记的onload编写两个实现。找到更新的小提琴这里

您可以同时发现这两个图表都是可见的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56001368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档