使用 jQuery 和 Flot 插件绘制图表

Posted

技术标签:

【中文标题】使用 jQuery 和 Flot 插件绘制图表【英文标题】:Drawing chart with jQuery and Flot Plugin 【发布时间】:2013-12-14 04:41:39 【问题描述】:
 <?php

        while($row = mysql_fetch_assoc($sql))
        
            $dataset1[] = array($row['dateReport'],$row['totalUniqueView']);
        

        echo json_encode($dataset1);
    ?>

$(document).ready(function () 
    //Graph scripts here.

        var graphData = <?php echo json_encode($dataset1); ?>;

大家好,我在这里需要帮助。我已经设法按照这里的教程进行操作:http://designmodo.com/create-interactive-graph-css3-jquery/

它运行良好。我试图修改它,以便它可以从我的数据库中读取数据。从上面的代码可以看出,我已经更改并添加了一些 php 行并修改了脚本。但是,它不起作用,它会将奇怪的数据返回到我的图表中。请帮忙。

【问题讨论】:

请贴出json_encode($dataset1);的内容 [["2013-08-23","427"],["2013-08-24","679"],["2013-08-25","678"] ,["2013-08-26","1030"],["2013-08-27","1145"],["2013-08-28","1241"],["2013-08-29 ","1265"],["2013-08-30","1292"]] 【参考方案1】:

好的,您的数据存在一些问题。

首先,日期/时间必须以 javascript 时间戳的形式提供;摘自the docs:

Flot 中的时间序列支持基于 Javascript 时间戳, 即在任何地方预期或移交时间值,Javascript 使用时间戳编号。这是一个数字,而不是 Date 对象。一种 Javascript 时间戳是自 1 月 1 日以来的毫秒数, 1970 年 00:00:00 UTC。这与 Unix 时间戳几乎相同,除了 它以毫秒为单位,所以记得乘以 1000!

其次,您的数据用引号括起来,这意味着它作为字符串而不是数字传递 - 这将阻止 Flot 正确绘制数据。来自the FAQ:

当我使用 JSON 数据作为源时,Flot 不起作用!

实际上,Flot 喜欢 JSON 数据,只是格式错误。双倍的 检查您没有输入字符串而不是数字,例如 [[“0”,“-2.13”],[“5”,“4.3”]]。这是最常见的错误,并且 错误可能不会立即出现,因为 Javascript 可以做一些 自动转换。

您应该能够通过生成如下数据来解决这两个问题:

    while($row = mysql_fetch_assoc($sql))
    
        $dataset1[] = array(strtotime($row['dateReport']) * 1000, (int)$row['totalUniqueView']);
    

【讨论】:

非常感谢...这真的很有帮助...我现在可以看到我的图表...现在唯一的问题是我的约会搞砸了。我得到这个现在... [1377216000000,427],[1377302400000,679],[1377388800000,678],[1377475200000,1030],[1377561600000,1145],[1377648000000,1241],[1377734400000,1265] [1377820800000,1292]] 我的日期格式是这种格式'2013-10-09'...图表必须以整数显示?谢谢.. 这是最后要解决的问题。 哦,好吧..您想要长数字,您只需要更改时间格式,将其添加到您的 xaxis 代码:timeformat: "%d/%m", 顺便说一下,如果你在做基于时间的图表,你需要包含jquery.flot.time.js javascript文件以及标准flot.js文件 啊,我忘了一件事!但是很好,我知道你很亲密:)

以上是关于使用 jQuery 和 Flot 插件绘制图表的主要内容,如果未能解决你的问题,请参考以下文章

Flot Bubbles 插件 - 气泡大小

如何将 Flot 与 AngularJS 集成?

jquery 绘图工具 flot 学习笔记

图从 MYSQL 到 jquery FLOT

如何画Flot时间数据格式图

几个图在flot中具有相同的图例