我对Flotr2相当陌生,而且我刚刚构建了一些简单的线形图。这很简单,很酷。但是,我需要将时间戳(月份日年和时间)作为我的x轴。我正在从我的数据库中的时间,所以它在PHP代码,我只是呼应出的数据,像这样:将时间戳放到Flotr2线图中的x轴上
while($stmt11->fetch()){
echo " [" . $date_of_completion . ", " . $score . "]";
echo ",";
$i++;
$total_score += $score;
}
echo "];";
和我进行了x轴的模式是“时间”和我已经试过“日期“,它从来没有工作。它始终把2001年到2002年之间的所有事情都弄错了,所以我认为它只是不知道如何处理我提供的数据。有其他人遇到过这个问题吗?我浏览了他们按时发布的例子,但对我来说没有意义。
任何帮助都将非常感激。谢谢
编辑 好的,这里有一些代码。这正是我正在做的从php中获取数据并将其转换为flotr2所需的格式。
if(!($stmt11 = $mysqliprivate->prepare("SELECT date_of_completion, score FROM ". $shs . " WHERE id = ? ORDER BY date_of_completion ASC"))){
echo "Prepare Failed: (" . $mysqliprivate->errno . ") " . $mysqliprivate->error;
}
else{
$total_score = 0;
$stmt11->bind_param("s", $id);
$stmt11->execute();
$stmt11->bind_result($date_of_completion, $score);
$time = time();
echo "var dataset = [";
$i = 0;
while($stmt11->fetch()){
$date = date("U", strtotime($date_of_completion));
echo " [" . $date . ", " . $score . "]";
echo ",";
$i++;
}
echo "];";
$stmt11->close();
}
这里是我运行的JavaScript:
graph = Flotr.draw(container, [
{ data : dataset, label : 'Historical Patient Scores', lines:{show:true}, points: {show:true}}
], {
xaxis: {
minorTickFreq: 4,
title : 'Date of Completion',
tickDecimals: 0,
noTicks: 10,
mode : 'time',
timeformat : '%y/%m/%d'
},
yaxis : {
max : 30,
title : 'Score',
tickDecimals:0,
min: 0
},
grid: {
minorVerticalLines: true
},
legend : {
position : 'nw'
},
mouse: {
track: true,
relative:true,
trackDecimals:0,
sensibility: 5
}
});
})(document.getElementById("editor-render-0"));
好吧,我已经使用时间($ date)将我的日期转换为纪元时间。然后,我将这些数字输入到图表中,并将模式设置为“mode:'%m /%d /%y'”,但它只是显示大数字而不是转换。如果我将它改为mode:'time',那么我得到的x轴是jan1-jan15,它根本不对应于我的日期,所以我所有的点都在图的一侧。 – Pompey
将'mode'保留为'time','timeformat'是x轴的单独参数。请参阅上面更新的答案,我希望它有帮助。 – Chase
我已经完全按照你所说的,但由于某种原因,它仍然无法正常工作。它似乎并没有理解我给它的时间,因为它没有把它正确地转换成正确的日期。它只是把它们放在同一个x点上。为了得到它的时间只是$ temp = time($ date_of_completion)的权利? – Pompey