Google visualization 具有特定列的折线图
我在这里显示一个折线图,并根据答案(Abinaya Selvaraju给出)设置数据开关: 它工作得很好 现在,我希望在图表首次显示时,某些列会自动变灰 我想我需要做一些如答案所示的事情,并得出以下结论:Google visualization 具有特定列的折线图,google-visualization,Google Visualization,我在这里显示一个折线图,并根据答案(Abinaya Selvaraju给出)设置数据开关: 它工作得很好 现在,我希望在图表首次显示时,某些列会自动变灰 我想我需要做一些如答案所示的事情,并得出以下结论: for (var regionCol=0; regionCol<chartData.getNumberOfColumns();regionCol++){ if ((regionCol >= 2) && (regionCol <=7)){
for (var regionCol=0; regionCol<chartData.getNumberOfColumns();regionCol++){
if ((regionCol >= 2) && (regionCol <=7)){
columns[regionCol] = {
label: chartData.getColumnLabel(regionCol),
type: chartData.getColumnType(regionCol),
calc: function () {
return null;
}
};
// grey out the legend entry
//series[col - 1].color = '#CCCCCC';
series[Math.floor(regionCol/3)].color = '#CCCCCC';
}
else{
// show the data series
columns[regionCol] = regionCol;
//series[col - 1].color = null;
series[Math.floor(regionCol/3)].color = null;
}
}
var viewToHideRegions = new google.visualization.DataView(chartData);
viewToHideRegions.setColumns(columns);
chart.draw(viewToHideRegions, options);
/* code to set regions to be hidden */
当我运行所有这些时,我得到消息“给定轴上的所有系列必须具有相同的数据类型”
我看不出我做错了什么
有人能帮忙吗?这里有几件事需要解决。首先,您只有7列,列索引从0开始,因此检查列索引2-7将开始得太晚,并溢出列列表的末尾。其次,您总是希望包含域列(索引0),但不希望将其列在
series
选项中。第三,“annotation”和“annotationText”列需要在视图中指定它们的角色
您的代码应该如下所示(默认情况下灰显所有系列):
var列=[0];
对于(var regionCol=1;regionCol
非常感谢您的回复。我仍然有一些问题。if statement中的变量“i”是什么?应该是“regionCol”吗?“系列”代表什么?对不起,i
应该是regionCol
。如果您的代码基于我在通过单击图例条目(看起来是:)打开和关闭数据系列时编写的示例JSFIDLE,那么系列
将绑定到选项
对象(有关详细信息,请参阅FIDLE)。是的,我的代码基于您的示例!根据你的建议,我的问题99%解决了。当图表第一次显示时,我可以隐藏第2-7列。它们在传说中是灰色的。然而,它们的线条在图表中也显示为灰色。我想完全隐藏他们的线条,直到用户点击他们在图例中的条目。在这一点上,我希望显示该行。您能建议如何实现这一点吗?它们不应该在图表中绘制,因为viewToHideRegions
视图中使用的列都返回null
。你能用你的全部代码更新你的帖子(或者创建一个JSFIDLE)吗?我会很乐意在下班后的几个小时内更新帖子或者创建一个JSFIDLE——我在这里工作的时间只有一半。
chartData.addColumn('string', 'Date'); // Implicit series 1 data col.
chartData.addColumn('number', colIdxName); // Implicit domain label col.
chartData.addColumn({type:'string', role:'annotation'});
chartData.addColumn({type:'string', role:'annotationText'});
chartData.addColumn('number', dpndata[colGenIdx]['name']); // Implicit domain label col.
chartData.addColumn({type:'string', role:'annotation'});
chartData.addColumn({type:'string', role:'annotationText'});
var columns = [0];
for (var regionCol = 1; regionCol < chartData.getNumberOfColumns(); regionCol++) {
columns[regionCol] = {
label: chartData.getColumnLabel(regionCol),
type: chartData.getColumnType(regionCol),
role: chartData.getColumnProperty(regionCol, 'role'),
calc: function () {
return null;
}
};
// grey out the legend entry
if (regionCol % 3 == 1) {
series[Math.floor(regionCol / 3) - 1].color = '#CCCCCC';
}
}
var viewToHideRegions = new google.visualization.DataView(chartData);
viewToHideRegions.setColumns(columns);
chart.draw(viewToHideRegions, options);
/* code to set regions to be hidden */