使用php值创建雷达图表

时间:2014-10-21 18:15:30

标签: php jquery charts

我得到雷达图的这个例子放到我的php应用程序中。

http://codepen.io/Synvox/pen/iHbxE/

值是否可能

 "JavaScript": 4.1,
      "Node.js": 3.5,
      "jQuery": 4,
      "PHP": 3,
      "C++": 2.5,
      "Problem Solving": 3.5,
      "DHTML": 4
在PHP中生成的js文件中的$(function(){ });中的

所以我可以创建一个更新的图表?如果是这样我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

使用AJAX将数据作为JSON获取相当简单,然后一旦收到数据就初始化插件。

$(function(){
    $.getJSON('path/to/server/', function(response) {
        $('#chart').radarChart({
          size: [500, 400],
          step: 1,
          title: "My Skills",
          values: response,
          showAxisLabels: true
        });
      });
 });

我的演示使用的是静态json文件。只需创建一个返回json_encoded数据的php文件

DEMO

答案 1 :(得分:1)

是的,它可以完成..我使用D3.js作为我的图表,这里是我在PHP中使用的函数调用的副本,用于获取数据并传回javascript ...

1)样本线图

function makeLineChart($array,$reportCurrency,$rate,$costpVM,$costpGB) {
        if ($reportCurrency !== "GBP") {
            $costperVM = $costpVM * $rate;
            $costperGB = $costpGB * $rate;
        } else {
            $costperVM = $costpVM;
            $costperGB = $costpGB;
        }

        $lineString .= "<div id='lineContainer'><canvas id='totalCostLine' width='650' height='300'></canvas>";
        $lineString .= "</div><div id='vmCosts'>Average Monthly Cost per Small VM per month<h2>$reportCurrency $costperVM</h2>Average Monthly Cost per Gigabyte per month<br/><h2>$reportCurrency $costperGB</h2></div>";
        $lineString .= "<script type='text/javascript'>";
        $lineString .= "var totalCostLine = document.getElementById('totalCostLine').getContext('2d');";
        $lineString .= "var data = { labels : [";
        foreach ($array as $key=>$value) {
            $lineString .= "'".$key."',";
        }
        $lineString = rtrim($lineString, ',');
        $lineString .= "], datasets : [{ fillColor: 'rgba(243,168,62,1)',
        strokeColor : 'rgba(220,220,220,1)',
        pointColor : 'rgba(220,220,220,1)',
        pointStrokeColor : '#fff', data : [";
        foreach ($array as $key=>$value) {
            if ($reportCurrency != "GBP") {
                $LineNumber = number_format(($value*$rate),2,'.','');
            } else {
                $LineNumber = number_format(($value),2,'.','');
            }
            $lineString .= "'".$LineNumber."',";
        }
        $lineString = rtrim($lineString, ',');
        $lineString .= "]}]};";
        $lineString .= "var lineOptions = {scaleLineColor : 'rgba(0,0,0,1)' };";
        $lineString .= "new Chart(totalCostLine).Line(data,lineOptions);";
        $lineString .= "</script>";

        return $lineString;
    }

2)样品甜甜圈饼图

function makeDoughnut($array,$reportCurrency,$rate) {
        $pieColors = array("#FF0000","#FF6699","#CC66FF","#0066FF","#00CC99","#33CC33","#FFFF00","#FF6600","#FF9900","#FF3399");
        $pieString = "<div class='blockGap'></div>";
        $pieString .= "<div id='pieContainer'><canvas id='technology' width='300' height='300'></canvas>";
        $pieString .= "<div id='pieLegend'>";
        $count=0;
        $result = count($array);
        for($i=1;$i<$result;$i+=2) {
            if ($reportCurrency != "GBP") {
                $figure = number_format($array[$i-1]*$rate,2);
            } else {
                $figure = number_format($array[$i-1],2);
            }
            $pieString .= "<div id='legendBox' style='background-color:".$pieColors[$count]."'></div><div id='legendText'>&nbsp".$array[$i].":&nbsp <strong>".$reportCurrency."</strong>&nbsp".$figure."</div>";
            $count++;
        }
        $pieString .= "</div></div>";
        $pieString .= "<script type='text/javascript'>";
        $pieString .= "var technology = document.getElementById('technology').getContext('2d');";
        $pieString .= "var data = [";
        $count=0;
        for($i=0;$i<$result;$i+=2) {
            $pieString .= "{ value: ".$array[$i].", color: '".$pieColors[$count]."' },";
            $count++;
        }
        $pieString = rtrim($pieString, ',');
        $pieString .= "]; var pieOptions = { segmentShowStroke: true, segmentStrokeWidth : 1, segmentStrokeColor : '#fcf7ec', animateScale: true }; new Chart(technology).Doughnut(data,pieOptions);";
        $pieString .= "</script>";

        return $pieString;
    }

跳这有助于指明方向......