Debugging 谷歌图表栏过滤

Debugging 谷歌图表栏过滤,debugging,google-visualization,Debugging,Google Visualization,我正在尝试过滤谷歌折线图列,并使用中共享的代码 这一切都很好,但我有很多列,希望图表开始时只显示一列,并允许用户根据需要添加任何其他列 我发现,如果我使用initState变量将其设置为最初要显示的一列,它将在选择器部分中显示该列,但最初仍然显示所有列,直到我选择一个附加列时,它隐藏了其余的列,只显示了我选择的两个列 然后我试着关闭这部分代码: // put the columns into this data table (skip column 0)<br> for (var i

我正在尝试过滤谷歌折线图列,并使用中共享的代码

这一切都很好,但我有很多列,希望图表开始时只显示一列,并允许用户根据需要添加任何其他列

我发现,如果我使用initState变量将其设置为最初要显示的一列,它将在选择器部分中显示该列,但最初仍然显示所有列,直到我选择一个附加列时,它隐藏了其余的列,只显示了我选择的两个列

然后我试着关闭这部分代码:

// put the columns into this data table (skip column 0)<br>
for (var i = 1; i < data.getNumberOfColumns(); i++) {
 columnsTable.addRow([i, data.getColumnLabel(i)]);
 initState.selectedValues.push(data.getColumnLabel(i));
}
它将我要查找的列(第16列)设置为选择列表中的选定列,但从可用列列表中删除其他列,并且仍然显示所有16列


如何设置它,使其最初显示单个选定列的数据,但仍然能够从选择器中选择其他列?

您希望在
for
循环中保持
columnstable.addRow
调用,因为它填充用于提供列列表的数据表。您可以根据需要设置
selectedValue
变量:

// put the columns into this data table (skip column 0)<br>
for (var i = 1; i < data.getNumberOfColumns(); i++) {
    columnsTable.addRow([i, data.getColumnLabel(i)]);
}
initState.selectedValues.push(data.getColumnLabel(16));
//将列放入此数据表(跳过列0)
对于(var i=1;i
为了使图表在初始选择时正确绘制,我们需要对结构进行一个小的调整,将所有更新代码放入其自身的函数中,然后根据需要调用该函数:

function setChartView () {
    var state = columnFilter.getState();
    var row;
    var view = {
        columns: [0]
    };
    for (var i = 0; i < state.selectedValues.length; i++) {
        row = columnsTable.getFilteredRows([{column: 1, value: state.selectedValues[i]}])[0];
        view.columns.push(columnsTable.getValue(row, 0));
    }
    // sort the indices into their original order
    view.columns.sort(function (a, b) {
        return (a - b);
    });
    chart.setView(view);
    chart.draw();
}
google.visualization.events.addListener(columnFilter, 'statechange', setChartView);

setChartView();
函数设置图表视图(){
var state=columnFilter.getState();
var行;
变量视图={
列:[0]
};
对于(变量i=0;i

这里有一个有效的例子:。

谢谢你,我原以为它需要以某种方式进行重组,但就是不知道该怎么做。再次感谢您的帮助和代码示例。
function setChartView () {
    var state = columnFilter.getState();
    var row;
    var view = {
        columns: [0]
    };
    for (var i = 0; i < state.selectedValues.length; i++) {
        row = columnsTable.getFilteredRows([{column: 1, value: state.selectedValues[i]}])[0];
        view.columns.push(columnsTable.getValue(row, 0));
    }
    // sort the indices into their original order
    view.columns.sort(function (a, b) {
        return (a - b);
    });
    chart.setView(view);
    chart.draw();
}
google.visualization.events.addListener(columnFilter, 'statechange', setChartView);

setChartView();