php - 谷歌图表错误的数据排序
问题描述
我想按日期对数据进行排序,但由于某种原因它没有正确排序,例如
['Sep 28',2],
['Sep 27',2],
['Oct 02',1],
['Oct 01',1],
['Sep 28',1],
['Sep 27',4],
['Sep 26',2],
所以它不是按日期排序的。
我已经使用 php 从数据库中获取数据
foreach ($array as $row){
echo "['".date('M d', strtotime($row['date']))."',".$row['views']."],";
}
数据排序正确,这是图表示例,您可以看到问题
解决方案
数据在 javascript 中生成一个字符串,因此它会像字符串一样排序。
相反,请在 javascript 中使用真实日期。
就像是...
foreach ($array as $row){
echo "[new Date(".strtotime($row['date'])." * 1000),".$row['views']."],";
}
然后您可以使用选项格式化轴的日期...
hAxis: {
format: 'MMM dd'
}
更新
由于格式不包括时间,x 轴可能会重复标签。
为了防止,使用自定义刻度。
hAxis: {
format: 'MMM dd',
ticks: data.getDistinctValues(0)
}
data
谷歌数据表在哪里...
更新 2
刻度的另一种选择是根据图表的日期范围构建自己的...
var oneDay = (1000 * 60 * 60 * 24);
var hAxisTicks = [];
var dateRange = data.getColumnRange(0);
for (var i = dateRange.min.getTime(); i <= dateRange.max.getTime(); i = i + oneDay) {
hAxisTicks.push(new Date(i));
}
hAxis: {
format: 'MMM dd',
ticks: hAxisTicks
}
推荐阅读
- python - 即使我给它正确的形状,Keras 也会抛出形状错误
- c++ - 向量构造函数中的空迭代器范围
- docker - 如何使用 Jenkins 在 UCP 上托管 node.js 服务
- spring - 在 Spring Security 上具有不记名身份验证的 CORS
- python - 为什么rabbitmq服务器没有明确的原因就停止了?
- algorithm - 图中的最短路径,当必须跳过每第二条边时
- fluentd - gssapi 错误 - 在 fluentd 中使用 webhdfs 时
- javascript - 当输入无效的用户名或密码登录表单时,用户名和密码边框颜色在php中变为红色
- sql - 从两个表中查询数据,只选择修改过的记录
- json - 在ruby中过滤具有不同头值的json