简体   繁体   English

如何使用Chart JS在一张图中创建带有动态X和Y轴的多折线图?

[英]How to create a multi line chart with with dynamic x and y axis in one graph using chart js?

I want to create a multi line chart with dynamically changing values of x and y axis.Value for my Y axis are 我想创建一个具有动态变化的x和y轴值的多折线图。我的Y轴的值是

traverse1 = [10,20,30,45,65,98]
traverse2 = [10,36,56,44,60,100]
traverse3 = [55,65,90,49,55,13]
traverse4 = [59,68,95,59,35,15]

Values for my X axis are 我的X轴的值为

 master = [0.1,0.2,0.3,0.5,,0.6]

All the values of X and Y will change dynamically by user. X和Y的所有值都将由用户动态更改。 I have tried to plot a graph but after changing the value dynamically my graph looks something like this grah. 我试图绘制一个图,但是在动态更改值之后,我的图看起来像这样。 我的图 .

As you can see in the graph that for each line there is a seperate labels for X axis. 如您在图表中所见,对于每条线,X轴都有单独的标签。 What I want is common x axis for all the lines in the graph. 我想要的是图中所有线条的通用x轴。 Below Is the code that I have used to plot the graph. 下面是我用来绘制图形的代码。

function chartCall(master, traverse1, traverse2, traverse3, traverse4)
{
    var canvas = document.getElementById("barChart");
    var ctx = canvas.getContext('2d');

    // Global Options:
    Chart.defaults.global.defaultFontColor = 'black';
    Chart.defaults.global.defaultFontSize = 16;

    var dataFirst = {
            label: "Traverse 1",
            data: traverse1,
            borderColor: "rgb(151,187,205)",
          };

        var dataSecond = {
            label: "Traverse 2",    
            data: traverse2,
            borderColor: "rgb(220,220,220)",
          };

        var dataThird = {
                label: "Traverse 3",
                data: traverse3,
                borderColor: "rgb(247,70,74)",

              };

        var dataFourth = {
                label: "Traverse 4",
                data: traverse4,
                borderColor: "rgb(70,191,189)",
              };

        var speedData = {
                  labels: master,
                  datasets: [dataFirst,dataSecond,dataThird,dataFourth]
                };

    // Chart declaration:
    var myBarChart = new Chart(ctx, {
      type: 'line',
      data: speedData,
      options: {}
    });
}

the chart seems to draw fine with the code posted in the question, 图表似乎与问题中张贴的代码相吻合,
even after changing the values and calling again. 即使更改值并再次调用也是如此。

see following working snippet, 请参阅以下工作片段,
click the button to update the chart with different values... 单击按钮以使用不同的值更新图表...

 $(document).ready(function() { var traverse1 = [10,20,30,45,65,98]; var traverse2 = [10,36,56,44,60,100]; var traverse3 = [55,65,90,49,55,13]; var traverse4 = [59,68,95,59,35,15]; var master = [0.1,0.2,0.3,0.5,,0.6]; chartCall(master, traverse1, traverse2, traverse3, traverse4); document.getElementById('update').addEventListener('click', function () { var traverse1 = getRandomValues(6); var traverse2 = getRandomValues(6); var traverse3 = getRandomValues(6); var traverse4 = getRandomValues(6); var master = [0.1,0.2,0.3,0.5,,0.6]; chartCall(master, traverse1, traverse2, traverse3, traverse4); }); function chartCall(master, traverse1, traverse2, traverse3, traverse4) { var canvas = document.getElementById("barChart"); var ctx = canvas.getContext('2d'); // Global Options: Chart.defaults.global.defaultFontColor = 'black'; Chart.defaults.global.defaultFontSize = 16; var dataFirst = { label: "Traverse 1", data: traverse1, borderColor: "rgb(151,187,205)", }; var dataSecond = { label: "Traverse 2", data: traverse2, borderColor: "rgb(220,220,220)", }; var dataThird = { label: "Traverse 3", data: traverse3, borderColor: "rgb(247,70,74)", }; var dataFourth = { label: "Traverse 4", data: traverse4, borderColor: "rgb(70,191,189)", }; var speedData = { labels: master, datasets: [dataFirst,dataSecond,dataThird,dataFourth] }; // Chart declaration: var myBarChart = new Chart(ctx, { type: 'line', data: speedData, options: {} }); } function getRandomValues(length) { var values = []; for (var i = 0; i < length; i++) { values.push(Math.random() * 10); } return values; } }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.min.js"></script> <input id="update" type="button" value="Update Chart" /> <canvas id="barChart"></canvas> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM