【问题标题】:CanvasJS line chart generation?CanvasJS 折线图生成?
【发布时间】:2015-05-21 19:53:13
【问题描述】:

我正忙于制作一个用于实时数据显示的 javascript 图表。我找到了这个 CanvasJS API。他们网页上specific chart 的默认代码很好,但是他们获取数据的部分当然是他们将变量数组留空并改用数学随机化数据函数,以便随机生成特定数据并在图中使用。

但是我想用来自我想使用的特定表的数据库数据填充该数组!

我已经尝试了很多东西,但如果我执行我的部分,图表将不再显示。我做错了什么?

这是我使用的 3 个代码:

默认代码(仅供比较):

<!DOCTYPE HTML>
<html>

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

        var dps = []; // dataPoints

        var chart = new CanvasJS.Chart("chartContainer",{
            title :{
                text: "Live Random Data"
            },          
            data: [{
                type: "line",
                dataPoints: dps 
            }]
        });

        var xVal = 0;
        var yVal = 100; 
        var updateInterval = 20;
        var dataLength = 500; // number of dataPoints visible at any point

        var updateChart = function (count) {
            count = count || 1;
            // count is number of times loop runs to generate random dataPoints.

            for (var j = 0; j < count; j++) {   
                yVal = yVal +  Math.round(5 + Math.random() *(-5-5));
                dps.push({
                    x: xVal,
                    y: yVal
                });
                xVal++;
            };
            if (dps.length > dataLength)
            {
                dps.shift();                
            }

            chart.render();     

        };

        // generates first set of dataPoints
        updateChart(dataLength); 

        // update chart after specified time. 
        setInterval(function(){updateChart()}, updateInterval); 

    }
    </script>
    <script type="text/javascript" src="/assets/script/canvasjs.min.js"></script>
</head>
<body>
    <div id="chartContainer" style="height: 300px; width:100%;">
    </div>
</body>
</html>

我自己的图表代码,基于上面的代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title></title>
    <script src="jquery.js"></script>
    <script src="jquery.canvasjs.js" ></script>
    <script src="canvasjs.js"></script>

    <script type="text/javascript">
        $(document).ready(function () {

            $.getJSON("data.php", function (result) {

                var chart = new CanvasJS.Chart("chartContainer", {
                    data: [
                        {
                            dataPoints: result
                        }
                    ]
                });

                chart.render();
            });
        });
    </script>
</head>
<body>

    <div id="chartContainer" style="width: 800px; height: 380px;"></div>

</body>
</html>

和我的 data.php 显示以下输出:

[{"x":"1","y":"5"},{"x":"2","y":"5"},{"x":"3"," y":"4"},{"x":"4","y":"1"},{"x":"5","y":"8"},{"x":" 6","y":"9"},{"x":"7","y":"5"},{"x":"8","y":"6"},{" x":"9","y":"4"},{"x":"10","y":"7"}]

 <?php
    //header('Content-Type: application/json');
    $con = mysqli_connect("localhost","root","","WebApplication");

    // Check connection
    if (mysqli_connect_errno($con))
    {
        echo "Failed to connect to DataBase: " . mysqli_connect_error();
    } 
    else
    {
    $data_points = array();

    $result = mysqli_query($con, "SELECT * FROM info");

    while($row = mysqli_fetch_array($result))
    {        
        $point = array("x" => $row['id'] , "y" => $row['acceleration']);

        array_push($data_points, $point);        
    }

        echo json_encode($data_points, 32); //define('JSON_NUMERIC_CHECK',32);   // Since PHP 5.3.3

    }
    mysqli_close($con);



    ?>

希望你有足够的信息!

谢谢

米耶

编辑

我根据@feedback-comment 将“我自己的图表”中的代码替换为以下代码:Anjali Jain

-->

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title></title>
    <script src="jquery.js"></script>
    <script src="jquery.canvasjs.js" ></script>
    <script src="canvasjs.js"></script>
    <script type="text/javascript" src="canvasjs.min.js"></script>


    <script type="text/javascript">
        $(document).ready(function () {

                $.getJSON("data.php", function (result) {

                var dataPoints = [];

                for (var i = 0; i <= result.length - 1; i++) {
                dataPoints.push({ x: Number(result[i].x), y: Number(result[i].y) });
                }

                var chart = new CanvasJS.Chart("chartContainer", {
                data: [
                {
                dataPoints: dataPoints
                }
                ]
                });

                chart.render();
                });
        });
    </script>
</head>
<body>

    <div id="chartContainer" style="width: 800px; height: 380px;"></div>

</body>
</html>

然而,我仍然一无所获。

【问题讨论】:

  • 你能检查一下我与canvasjs相关的新question吗?

标签: javascript php canvasjs


【解决方案1】:

当您直接传递字符串时,CanvasJS 要求 x 和 y 值是数字。您可以将它们转换为如下所示的数字

$.getJSON("data.php", function (result) {

    var dataPoints = [];

    for (var i = 0; i <= result.length - 1; i++) {
        dataPoints.push({ x: Number(result[i].x), y: Number(result[i].y) });
    }

    var chart = new CanvasJS.Chart("chartContainer", {
        data: [
        {
            dataPoints: dataPoints
        }
        ]
    });

    chart.render();
});

【讨论】:

  • Wayw 谢谢你的回复,没有人会去。我会试试这个并告诉你。谢谢:)
  • 您好,Anjali Jain,请考虑查看我在上方编辑下的帖子。在那里我展示了“新”代码。我仍然没有得到图表作为输出。我什么都得不到。知道为什么
  • 谢谢,我会调查的。
  • 你能检查一下我与canvasjs相关的新question吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
  • 2021-05-25
相关资源
最近更新 更多