奇怪的折线图轴和工具提示位置,而DataTable似乎是正确的

时间:2014-09-28 03:28:55

标签: javascript google-visualization

我有一个用于在Google Charts中创建DataTable的数组。

阵列看起来像这样。

[
    ["date", "count"],
    [Mon Sep 22 2014 18:07:03 GMT+0200 (CEST), 4], // First member is actually a Date Object!
    [Tue Sep 23 2014 21:54:10 GMT+0200 (CEST), 7],
    [Thu Sep 25 2014 03:37:30 GMT+0200 (CEST), 9],
    [Fri Sep 26 2014 05:27:30 GMT+0200 (CEST), 10]
]

当像这样扔在图表机械上时......:

var chartModel = google.visualization.arrayToDataTable(dateAwareChartModel);
var dateFormatter = new google.visualization.DateFormat({formatType: "short"});
dateFormatter.format(chartModel, 0);
var chart = new google.visualization.LineChart(chartContext);
chart.draw(chartModel, {hAxis: {format: "dd MMM yy"}, tooltip: {trigger: "selection"}});

...最终以此图表结束:

enter image description here

至少有两件事情很奇怪:

  1. 为什么09/23是起点?我期待09/22。
  2. 可选择的点位于奇怪的位置(不仅是图片中可见的位置。它们都以某种方式被置于笨拙的位置)。谷歌图表教程中的示例显示了正确的hAxis值,其中这些漂亮的垂直方向线是。
  3. 我需要在这里配置什么?

    提前致谢!

    更新1:

    就像kums指出的那样,arrayToDataTable似乎是错误的方式:

      

    google.visualization.arrayToDataTable()

         

    此方法采用二维数组并将其转换为a   数据表。

         

    列数据类型由数据自动确定   提交。 此方法不支持使用Date或DateTime   值,也不支持使用JavaScript文字单元格   具有f或v值的对象:{v:3.0,f:'Three'}。如果你需要   指定自定义单元格值或格式化值,或Date / DateTime   value,使用DataTable.addRow()/ DataTable.addRows()或   DataTable.setValue()。

    我现在正在使用addRow

    var chartModel = new google.visualization.DataTable();
    chartModel.addColumn("date", dateAwareChartModel[0][0]);
    chartModel.addColumn("number", dateAwareChartModel[0][1]);
    for (var i = 1 ; i < dateAwareChartModel.length ; i++) {
        chartModel.addRow(dateAwareChartModel[i]);
    }
    var opts = {hAxis: {format: "dd MMM yy"}, tooltip: {trigger: "selection"}};
    new google.visualization.LineChart(chartContext).draw(chartModel, opts);
    

    我知道它可能更优雅。这只是一种快速而肮脏的方法。

    有趣的是,前面描述的问题仍然存在。

    好消息是选择点的定位并不奇怪。它就是这样的。定位取决于一天中的时间。

    现在的问题是:如何告诉LineChart忽略时间值而只关注飞机日期呢?

    更新2:

    在谈论忽略时间价值时更具体:

    想象一下这样的任何条目:

    [Tue Sep 23 2014 21:54:10 GMT+0200 (CEST), 7]
    

    是否可以让折线图显示

    [Tue Sep 23 2014 00:00:00 GMT+0200 (CEST), 7]
    

    这会自动导致正确放置标签。

    当时我通过明确更改我的模型来实现这一目标(为每天创建新日期,将时间设置为午夜)。 我想知道是否有一种不那么冗长的方式让图表忽略了确切的时间。

0 个答案:

没有答案