Flot Chart - 图形数据作为具有多个属性的对象数组

时间:2015-02-19 13:52:42

标签: arrays object flot graphic

我想要一个数组对象而不是以下的json格式;

[1409558400000, 7.45],[1409562000000, 5.71], [1409565600000, 7.50], 
 ... .;  

我的目的是根据他们的hh:mm参数显示图表上的所有数据(已在链接中完成),我最终得到了这样的json数组; [10,7.45],[09,5.71],[11,7.50],......

但我还想保留他们的时间戳,以获得有关每个数据点的更多信息,以便我可以在用户点击某个点时提供时间戳。

我只需要这样的东西[10,7.45,1409562000000];小时值,年龄和时间戳。

如何为flot chart提供此类数据?



var d = [
    [1409558400000, 7.45],
    [1409562000000, 5.71],
    [1409565600000, 7.50],
    [1409569200000, 7.63],
    [1409576400000, 3.14],

    [1409644800000, 7.45],
    [1409648400000, 5.71],
    [1409652000000, 7.50],
    [1409655600000, 7.63],
    [1409662800000, 3.14],

    [1409731200000, 7.45],
    [1409734800000, 5.71],
    [1409738400000, 7.50],
    [1409742000000, 7.63],
    [1409749200000, 3.14]
];

    $.each(d, function (index, datapoint) {
        datapoint[0] = (new Date(datapoint[0])).getHours();
    });

$.plot("#placeholder", [d], {
    series: {
        lines: {
            show: true
        },
        points: {
            show: true
        }
    },
    grid: {
        hoverable: true,
        clickable: true,
        markings: [{
            yaxis: {
                from: 0,
                to: 4
            },
            color: "#F2CDEA"
        }, {
            yaxis: {
                from: 4,
                to: 7
            },
            color: "#D7EEE1"
        }, {
            yaxis: {
                from: 7,
                to: 12
            },
            color: "#F2CDEA"
        }]
    },
    xaxis: {

    },
    yaxis: {
        min: 0,
        max: 12
    }
});




$("#placeholder").bind("plotclick", function(event, pos, item) {
                var x = item.datapoint[0].toFixed(2),
                    y = item.datapoint[1].toFixed(2);
				

                if (item) {
                    //window.location="pagex.html";	
                    alert("x: " + x);

                    //plot.highlight(item.series, item.datapoint);
                }
            });

<!-- basic time series flot chart -->
<h>Create a custom green range</h>
<div style="height: 400px; width: 600px;" id="placeholder"></div>
&#13;
&#13;
&#13;

http://jsfiddle.net/shamaleyte/wzLaqzf5/1/

1 个答案:

答案 0 :(得分:1)

基本上我会根据以下链接调整我的场景中给出的答案。

   Link for Referenced answer 

链接: displaying custom tooltip when hovering over a point in flot

我的代码:

var data = [
    [1409558400000, 7.45],
    [1409562000033, 5.71],
];
    $.each(data, function (index, datapoint) {
        datapoint[2] = datapoint[0]; // copy the timestamp and paste it as the 3rd object

        datapoint[0] = (new Date(datapoint[0])).getHours(); // to put hours on y axis
    });

$.plot("#placeholder", [d2], {
    series: {
        lines: {
            show: true
        },
        points: {
            show: true
        }
    },
    grid: {
        hoverable: true,
        clickable: true,
        markings: [{
            yaxis: {
                from: 0,
                to: 4
            },
            color: "#F2CDEA"
        }, {
            yaxis: {
                from: 4,
                to: 7
            },
            color: "#D7EEE1"
        }, {
            yaxis: {
                from: 7,
                to: 12
            },
            color: "#F2CDEA"
        }]
    },
    xaxis: {

    },
    yaxis: {
        min: 0,
        max: 12
    }
});




$("#placeholder").bind("plotclick", function(event, pos, item) {
                var x = item.datapoint[0].toFixed(2),
                    y = item.datapoint[1].toFixed(2);

               var tooltip = item.series.data[item.dataIndex][2];

                if (item) {
                    //window.location="pagex.html"; 
                    alert("x: " + tooltip);

                    //plot.highlight(item.series, item.datapoint);
                }
            });

我的小提琴:http://jsfiddle.net/shamaleyte/wzLaqzf5/2/