加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 谷歌图表 – 绘制空值

发布时间:2020-12-13 17:25:16 所属栏目:PHP教程 来源:网络整理
导读:我创建了一个折线图,它用php和json加载数据. 问题是图表将NULL值绘制为0并且看起来非常难看. 我最好的猜测是我以错误的方式创建json,而我真正想要的输出是{“v”:}而不是{“v”:“”}. 折线图现在: 我想要的是: PHP代码 $reports['cols'][] = array(labe
我创建了一个折线图,它用php和json加载数据.

问题是图表将NULL值绘制为0并且看起来非常难看.

我最好的猜测是我以错误的方式创建json,而我真正想要的输出是{“v”:}而不是{“v”:“”}.

折线图现在:

我想要的是:

PHP代码

$reports['cols'][] = array(label => "Time",type => "string");
        $reports['cols'][] = array(label => "Today",type => "number");
        $reports['cols'][] = array(label => "Yesterday",type => "number");
        $reports['cols'][] = array(label => "Budget",type => "number");

            //Some mysql code that populates values ($today,$yesterday,$budget)

        $rows = array();
        for($i=10; $i <= 21; $i++){

            $temp = array();
            $temp[] = array('v' => (int) $i);
                    //Format string will return "" and not "0" if value is blank
            $temp[] = array('v' => (string) $today["$i"]);
            $temp[] = array('v' => (string) $yesterday["$i"]);
            $temp[] = array('v' => (string) $budget);
            $rows[]['c'] = $temp;
        }

        $reports['rows'] = $rows;
        $string=json_encode($reports);
        echo $string;

php的输出:

{
    "cols":[
        {"label":"Time","type":"string"},{"label":"Today","type":"number"},{"label":"Yesterday",{"label":"Budget","type":"number"}
    ],"rows":[
        {"c":[{"v":10},{"v":"0"},{"v":"90000"}]},{"c":[{"v":11},{"v":"22491"},{"v":"7420"},{"c":[{"v":12},{"v":""},{"v":"50082"},{"c":[{"v":13},{"v":"91660"},{"c":[{"v":14},{"v":"109204"},{"c":[{"v":15},{"v":"115280"},{"c":[{"v":16},{"v":"111853"},{"c":[{"v":17},{"v":"87368"},{"c":[{"v":18},{"v":"33063"},{"c":[{"v":19},{"v":"14903"},{"c":[{"v":20},{"v":"1441"},{"c":[{"v":21},{"v":"90000"}]}
    ]
}

Javascript

google.load("visualization","1",{packages:["corechart"]});
    google.setOnLoadCallback(drawChart);
    function drawChart() {

    var jsonData = $.ajax({
        url: "functions/load.php?q=salesChart",dataType:"json",async: false
    }).responseText;

    // Create our data table out of JSON data loaded from server.
    var data = new google.visualization.DataTable(jsonData);

    var options = {
        title: 'Money / Hour',colors: ['#4BA15A','#45559D','red'],legend: {position: 'top'},lineWidth: 2,pointSize: 3,fontName: 'Helvetica',fontSize: 10,interpolateNulls: false,backgroundColor: {strokeWidth: 1},chartArea: {left: 70,top: 60,width: "85%",height: "70%"} 
    };

    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    chart.draw(data,options);
}

解决方法

我用{“v”:null}替换{“v”:“”}并且知道它看起来很棒!

jsonData=jsonData.replace(/""/g,'null');

结果是没有绘制0的图表

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读