Google visualization 具有特定列的折线图

Google visualization 具有特定列的折线图,google-visualization,Google Visualization,我在这里显示一个折线图,并根据答案(Abinaya Selvaraju给出)设置数据开关: 它工作得很好 现在,我希望在图表首次显示时,某些列会自动变灰 我想我需要做一些如答案所示的事情,并得出以下结论: for (var regionCol=0; regionCol<chartData.getNumberOfColumns();regionCol++){ if ((regionCol >= 2) && (regionCol <=7)){

我在这里显示一个折线图,并根据答案(Abinaya Selvaraju给出)设置数据开关:

它工作得很好

现在,我希望在图表首次显示时,某些列会自动变灰

我想我需要做一些如答案所示的事情,并得出以下结论:

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 */