【问题标题】:Google Charts Data View set columns dynamically谷歌图表数据视图动态设置列
【发布时间】:2016-01-14 06:52:43
【问题描述】:

我正在使用谷歌图表在网页上呈现数据。我使用 CSV 作为输入,然后处理该数据以供 google chart api 使用。

我想在条形图/柱形图的顶部显示列值。我发现如果您创建一个数据视图并执行 view.setColumns 并指定角色注释,那么数字会在图表顶部显示,否则您需要将鼠标悬停在图表上才能看到确切的值。

我的问题是我无法为视图动态设置列和角色。由于输入是 csv,我永远无法确定列。

主要目的是在条形图上显示数字,如果有其他替代方法可以做到,那么也将不胜感激。干杯

var arrayData = csvAttr.toArrays(csvString, {
                onParseValue : csvAttr.hooks.castToScalar
            });

var data = new google.visualization.arrayToDataTable(arrayData);
view = new google.visualization.DataView(data);

             view.setColumns([0, 1,
                               { calc: "stringify",
                                 sourceColumn: 1,
                                 type: "string",
                                 role: "annotation" },
                               2,
                               { calc: "stringify",
                                     sourceColumn: 2,
                                     type: "string",
                                     role: "annotation" },
                                3,
                                { calc: "stringify",
                                     sourceColumn: 3,
                                     type: "string",
                                     role: "annotation" }

                               ]);

【问题讨论】:

  • 帮助我理解为什么你不能动态地setColumns。是因为您不知道文件中有多少列吗?图表总是有效吗?似乎前一列或两列需要是行标签,其余列是行值。 CSV 文件的任何设置结构?
  • @WhiteHat,别担心。我可以使用 jquery csv 来查找列等,并且能够动态设置数据。对我来说,这是一天的结束,可能是我厌倦了解决很多其他事情。我已经解决了。感谢收看。
  • 干杯!去过那里...

标签: javascript csv google-visualization


【解决方案1】:

动态设置列的简单方法。

var totalColumns = 3  
var view = new google.visualization.DataView(dataTable); 
var columns = [];
for (var i = 0; i <= totalColumns ; i++) {
    if (i > 0) {
        columns.push(i);
        columns.push({
            calc: "stringify",
            sourceColumn: 1,
            type: "string",
            role: "annotation"
        });

    } else {
        columns.push(i);
    }
}

view.setColumns(columns);

【讨论】:

  • 应该是sourceColumn: i,
  • 请注意,虽然totalColumns = 3i &lt;= totalColumns 对于原始帖子的示例是正确的,但“totalColumns”并不是原始数据表中的总列数(3 vs 4)。如果您认为 totalColumns 是包括独立(零索引)列在内的所有列的数量,您应该使用 i &lt; totalColumns 而不是 i &lt;= totalColumns
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 2012-11-28
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多