如何在Flot中使用Json绘制图形?

时间:2012-11-16 11:52:33

标签: javascript ajax flot

我正在使用Flot Graph Api在我的客户端php中显示条形图,折线图。我试图将Json传递给他们在他们的例子中提到的情节图。

我像这样收拾Json,

 [{"label":"63f9311f-5d33-66ad-dcc1-353054485572","bars":{"show":true},"data":        [[-170.44530493708,270.44530493708]]},{"label":"8f6dcf4a-b20c-8059-1410-353054486037","bars":{"show":true},"data":[[-791.50048402711,891.50048402711]]},{"label":"c2b4cf75-3e0b-f9ff-722e-353054485803","bars":{"show":true},"data":[[-1280.0484027106,1380.0484027106]]},{"label":"eb963e23-75cd-6131-867a-353054485894","bars":{"show":true},"data":[[-1487.2604065828,1587.2604065828]]},{"label":"ef413106-d5be-593b-1cda-353054485719","bars":{"show":true},"data":[[-1940.9583736689,2040.9583736689]]}]

但图表并未绘制。

     $.ajax({                                      
  url: '../c/By_Machine_Controller.php',                  //the script to call to get data          
  data: "",                        //you can insert url argumnets here to pass to api.php
                                   //for example "id=5&parent=6"
  dataType: 'json',                //data format      
  success: function(data)          //on recieve of reply
  {
    var Up = [];
    var Down = [];
    Up = data[0];              //get Up
    Down = data[1];           //get Down
    //alert(Up);
    $.plot($("#placeholder"), [ Up , Down ]);
  } 
});

与Json或My JS有什么关系是错误的。既然,我是flot的新手,我没有任何线索。任何人都可以帮助我。

我输入的答案工作正常,但在这种情况下,我正在将JSON写入临时文件并访问它,但我的要求是,

我在本地主机中的MODEL文件夹中计算flot的值,并将其作为关联数组传递,并将其编码为CONTROLLER文件夹中的JSON。现在我需要在我的localhost中访问VIEW文件夹中的JSON。

控制器代码:

    $json = json_encode($allData);
    $myFile = "ReasonByTime.txt";
    $fh = fopen($myFile, 'w') or die("can't open file");
    $stringData = "Bobby Bopper\n";
    fwrite($fh, $json);

    fclose($fh);

但是当我通过JS访问VIEW中CONTROLOLLER的$ json时,如下所示,它无效。我用谷歌搜索它,但我无法解决它。你能帮我解决这个问题吗?

查看JS代码以从控制器访问JSON。

      $(document).ready(function () {

    //var dataurl = '../c/By_Machine_Controller.php';

    function onDataReceived(data) {

        $.plot(placeholder, data, options);
    }
    $.ajax({
        type: "GET",
        url: '../c/By_Machine_Controller.php',
        data: 'data',
        dataType: 'json', 
        success: function(data) { 
            alert(data);
        }
    });
});

3 个答案:

答案 0 :(得分:1)

看起来不错,如果您需要,可以添加barWidth

http://jsfiddle.net/YHPea/或页面示例:http://people.iola.dk/olau/flot/examples/stacking.html

Flot库填充所有空格,这就是你得到这样结果的原因:http://jsfiddle.net/YHPea/1/

答案 1 :(得分:0)

我做了一些测试,只是

$.plot($("#placeholder"), data);

适合我。

答案 2 :(得分:0)

这适合我。

 <script language="javascript" type="text/javascript">  
$(document).ready(function(){
$.getJSON('ReasonByTime.txt', function(json) {
    $.plot($("#placeholder"),json, {bars: { show: true, barWidth:0.2},xaxis: {ticks: json.ticks}});
});

});