javascript - 动态更改 Google Charts 中的 View 列名称

标签 javascript charts google-visualization

我的数据如下

var data = google.visualization.arrayToDataTable([
  ['Date', 'A|36~Batman', 'A|37~Superman', 'A|38~Aquaman'],
  ['01/08/2018', 950, 654, 123],
  ['02/08/2018', 760, 786, 423],
  ['03/08/2018', 1121, 856, 632],
  ['04/08/2018', 842,  475, 257],
  ['05/08/2018', 948,  658, 324]
]);

在图表中绘制此图表时,我想显示在“~”符号后拆分的标签值,即( bat 侠、超人、海王)。在我的图表的 OnClick 事件期间,我需要波浪号之前的值,所以我需要数据中的这些值,因为我的 onclick 代码如下所示

var col = chart.getSelection()[0]['column'];
var Id = data.getColumnLabel(col).substr(0, data.getColumnLabel(col).indexOf("~"));

所以要获取数据,我还需要 Id 值。我能够循环列并修改列标签值,但我不知道将列标签设置为新值的代码。我要循环的代码如下

var view = new google.visualization.DataView(data);
for (var i = 0; i < view.getNumberOfColumns(); i++) {
    var ColumnName = view.getColumnLabel(i);
    var NewColumnName = ColumnName.substring(ColumnName.lastIndexOf('~'), ColumnName.length)
    // set new column name in the view
}

如何用新列名替换旧列名?

最佳答案

使用方法--> setColumnLabel

然而,这个方法在 View 上不存在,
所以你必须更改数据表上的列标签

由于 View 是基于数据表的,
View 也选择了新标签...

var view = new google.visualization.DataView(data);
for (var i = 0; i < view.getNumberOfColumns(); i++) {
    var ColumnName = view.getColumnLabel(i);
    var NewColumnName = ColumnName.substring(ColumnName.lastIndexOf('~'), ColumnName.length)
    data.setColumnLabel(i, NewColumnName);
}

编辑

不是使用标签来存储两个值,
利用列上可用的属性。

var data = google.visualization.arrayToDataTable([
  ['Date', {id: 'A|36', label: 'Batman'}, {id: 'A|37', label: 'Superman'}, {id: 'A|38', label: 'Aquaman'}],
  ['01/08/2018', 950, 654, 123],
  ['02/08/2018', 760, 786, 423],
  ['03/08/2018', 1121, 856, 632],
  ['04/08/2018', 842,  475, 257],
  ['05/08/2018', 948,  658, 324]
]);

然后你可以使用方法 --> getColumnId() & getColumnLabel()

如果这还不够,您可以提供自己的自定义属性...

var data = google.visualization.arrayToDataTable([
  ['Date', {id: '36', label: 'Batman', p: {category: 'A'}}, {id: '37', label: 'Superman', p: {category: 'A'}}, {id: '38', label: 'Aquaman', p: {category: 'A'}}],
  ['01/08/2018', 950, 654, 123],
  ['02/08/2018', 760, 786, 423],
  ['03/08/2018', 1121, 856, 632],
  ['04/08/2018', 842,  475, 257],
  ['05/08/2018', 948,  658, 324]
]);

然后使用方法 --> getColumnProperty(1, 'category')

关于javascript - 动态更改 Google Charts 中的 View 列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52445271/

相关文章:

javascript - Firebase 远程配置( Angular )

javascript - 为 Realm 创建主键

javascript - 如何为 angular-chart.js 中的每个栏设置不同的颜色?

html - 无法增加 Google Chart 高度

javascript - Fabric.js 动态裁剪区域以不同方式影响图像和 SVG/形状

javascript - 如何将查询的数据(通过帖子)放在我的 jquery 图表上?

javascript - c3.js - 如何将 y 行值设置为 url 中的第一个值(json 数据)

javascript - 减少 dimple.js 图表和轴之间的填充

javascript - Google 图表中的图例无法正确加载

twitter-bootstrap - 使用Grails Google可视化API插件创建响应式图表?