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(视图,选项)绑定我的图表代码>因为我也需要在图表上显示标签。还有其他选择吗?