【问题标题】:Calculated text column for Google Line Chart x-axis not workingGoogle折线图x轴的计算文本列不起作用
【发布时间】:2013-09-18 08:44:37
【问题描述】:

将折线图的 x 轴标签从一段文本更改为另一段文本不起作用;请问我做错了什么?

我有一个折线图,它的离散 x 轴标有日期的文本表示。 (我正在使用 corechart;我创建了一个 dataTable,基于它创建了一个 dataView,并将图表创建为 ChartWrapper)。

我正在根据文本日期过滤 dataView,因此我的初始 x 轴域值的格式为 2013-09-01... 并且有效。但现在我需要将 x 轴标签更改为 9/2013 格式。我在此找到的示例似乎很清楚,但图表没有绘制,而是被错误替换:“c is null”。谷歌搜索,问题听起来像我的域列是错误的数据类型,但我不明白这是怎么可能的。

你能指出我的错误吗?下面,我得到了我需要显示的列列表;这将是一个类似 [0,3,5] 的列表,其中 0 是域列。我先将其删除,以便设置新的格式化列:

// Format the x-axis as n/Y
// remove unformatted column 0;
view_col_list.splice(0, 1);
data_displayed.setColumns([
  {
    role: 'domain',
    calc: function(dataTable, row) {
      var my_date = new Date(dataTable.getValue(row, 0));
      console.info('the date I want to format: %o',my_date);
      // this does in fact produce "9/2013"
      console.info('the date I want to show' + my_date.getMonth() + '/' + my_date.getFullYear());
      return my_date.getMonth() + '/' + my_date.getFullYear();
    },
    type: 'string',
    sourceColumn: 0,
    id: 0
  },
  view_col_list
]);

【问题讨论】:

    标签: google-visualization axis-labels


    【解决方案1】:

    我猜您的日期可能不是问题,但我建议您更改一些内容:删除“sourceColumn”属性,因为它不是必需的;并更改构建新日期字符串的方式,因为将字符串转换为 Date 对象在浏览器之间是不一致的。此外,#getMonth 方法返回索引为 0 的月份,因此“2013-09-01”将在您的代码中变成“8/2013”​​(假设日期字符串转换有效)。有一种更简单的方法,它不涉及转换为 Date 对象并返回为字符串:

    var dateArray = dataTable.getValue(row, 0).split('-');
    return dateArray[1] + '/' + dateArray[0];
    

    我怀疑问题是由这个引起的:

    view_col_list.splice(0, 1);
    data_displayed.setColumns([{...}, view_col_list]);
    

    相当于data_displayed.setColumns([{...}, [...]]); 绝对行不通。与其拼接view_col_list 中的第一个元素,不如将其替换为您的对象:

    view_col_list[0] = {...};
    data_displayed.setColumns(view_col_list);
    

    【讨论】:

    • 给其他人的注意事项:“我怀疑问题是由这个引起的:”是问题的确切解决方案;其他一切都很好!
    猜你喜欢
    • 2015-03-24
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多