Javascript Jquery flot插件未根据日期绘制图形
我正在尝试使用jquery flot插件和JSON数据绘制一个图。我需要做的是Javascript Jquery flot插件未根据日期绘制图形,javascript,jquery,ajax,json,graph,Javascript,Jquery,Ajax,Json,Graph,我正在尝试使用jquery flot插件和JSON数据绘制一个图。我需要做的是 当页面加载时,它将进行ajax调用并从服务器接收json数据 从收到的json中,我需要添加“x”和“y”轴标签。我想画一张图表 根据json数据中的点 “Y”轴的值必须介于0到100之间 “X”轴应该只有json数据值 我的剧本是: //var maxDate = new Date(); //var minDate = new Date(); var options = {
- 当页面加载时,它将进行ajax调用并从服务器接收json数据
- 从收到的json中,我需要添加“x”和“y”轴标签。我想画一张图表
- 根据json数据中的点
- “Y”轴的值必须介于0到100之间
- “X”轴应该只有json数据值
//var maxDate = new Date();
//var minDate = new Date();
var options = {
series: {
lines: {
show: true
},
points: {
show: true
}
},
grid: {
hoverable: true,
clickable: true
},
xaxis: { //min: minDate.setMonth(maxDate.getMonth() - 12),
//max: maxDate,
mode: "time",
monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
timeformat: "%b(%Y)"
},
yaxis: {
min: 0,
max: 100,
ticks: 10
}
var data = [];
var placeholder = $("#trigo");
var dataurl = 'cprogress.php?action=overall';
// then fetch the data with jQuery
function onDataReceived(series) {
data.push(series);
$.plot(placeholder, data, options);
setData(data);
}
$.ajax({
url: dataurl,
method: 'GET',
dataType: 'json',
success: onDataReceived
});
现在我的图表是这样的
还有JSON
[["2013-11-05",8.3333333333333],["2013-12-05",0]]
我想打印的是
2013年11月和2013年12月,必须从8.33到0绘制图表现在是1970年1月,为什么我不知道
请任何人帮我解决这个问题。两天来我一直在努力解决这个问题。谢谢…
这里发生了几件事。首先,弗洛特预计的日期将是1970年以来的百万秒。当一个字符串被传递时,它只会对您的字符串输入计算为-1000、0和1000。结果是三个日期,基本上都是1970年1月
因此,您需要一个能够为您操作这些日期输入的小助手函数
function formatTime(input){
for( var i = 0; i < input.length; i++ ){
var date = input[i][0];
input[i][0] = new Date(date).getTime();
}
return input;
}
因此,这将解决“时代”问题。然而,我注意到还有一个障碍。一旦您这样做,图形的格式将显示两个标签紧挨着彼此。这是因为(如果自定义被注释掉,可以观察到)flot希望按天显示范围。因此,月份的变化(在一天范围的最后)是11月和12月的位置。为了克服这个问题,我建议使用
autoscaleMargin: 1,
用于x轴自定义。演示还包括一个小的单击示例(主要是为了验证数据点的准确性)
查阅的参考文献:
cprogress.php?总的来说
页面正在打印的内容,还是您想要的内容?这个问题可能看起来很愚蠢,但我只是问你的PHP是否正确。@Kevin Cittadini我有jquery.flot.time.js
。因此,只有我的图表显示的是1970年1月的<代码>和你所说的**文档报告模式:null**@Kevin Cittadini my<代码>php是正确的。结果将根据情况而变化。所以我不想在json
Nothing中得到结果,我只是引用了文档行。是的,我后来发现了。无论如何,看看这个。日期必须为Javascript时间戳,但您返回的日期格式为yyyy-mm-dd
。Javascript时间戳是Unix时间戳的1000倍(页面上也这么说)@Kevin Cittadini谢谢你的建议。现在它工作得很好,谢谢你的回答。我已经根据Kevin Cittadini的建议解决了我的问题,我只需要在我的php
脚本中将strotime
乘以1000
。它解决了我的问题。谢谢你提供了更详细的答案。我需要一个关于这个图表的小帮助。我想根据数据设置图表中的x轴刻度。例如,如果五月数据是2013-11-052013-12-052014-01-05
,那么我只想要2013年11月、2013年12月、2013年1月
。
autoscaleMargin: 1,