Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态更改Google图表中的视图列名_Javascript_Charts_Google Visualization - Fatal编程技术网

Javascript 动态更改Google图表中的视图列名

Javascript 动态更改Google图表中的视图列名,javascript,charts,google-visualization,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]

我的数据如下

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]
]);
在图形中绘制此图表时,我想显示在“~”符号后拆分的标签值,即(蝙蝠侠、超人、水瓶侠)。在图表的OnClick事件期间,我需要波浪线之前的值,因此我需要数据中的这些值,因为OnClick代码如下所示

var col = chart.getSelection()[0]['column'];
var Id = data.getColumnLabel(col).substr(0, data.getColumnLabel(col).indexOf("~"));
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
}
因此,为了获取数据,我还需要Id值。我能够循环列并修改列标签值,但我不知道将列标签设置为新值的代码。我的循环代码如下

var col = chart.getSelection()[0]['column'];
var Id = data.getColumnLabel(col).substr(0, data.getColumnLabel(col).indexOf("~"));
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
}
var view=newgoogle.visualization.DataView(数据);
对于(var i=0;i
如何用新列名替换旧列名?

使用方法-->
setColumnLabel

但是,视图上不存在此方法,
因此,您必须更改数据表上的列标签

由于视图基于数据表,
视图也会拾取新标签

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);
}
然后可以使用方法-->
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')

正如我所说,如果我的数据表列名被替换,在OnClick事件期间,我将无法获取位于“~”之前的已单击对象的Id。我还使用
chart.draw(视图,选项)绑定我的图表因为我也需要在图表上显示标签。还有其他选择吗?