Charts Google可视化:从过滤表创建数据视图

Charts Google可视化:从过滤表创建数据视图,charts,google-visualization,Charts,Google Visualization,是否有一种“内置”方法可以仅使用可见行从仪表板表创建数据视图?在编写一个不必要的冗长备选方案之前,我想知道 编辑: 我在参考文档中遗漏了这一点,但这并不能完全解决问题,因为您仍然需要做一些小动作来获取仪表板上活动过滤器的状态,并将它们传递给getFilteredRows()方法 您可以使用getFilteredRows()方法,该方法“返回与所有给定筛选器匹配的行的行索引。索引按升序返回。此方法的输出可用作DataView.setRows()的输入。” 使用仪表板时需要包装表格的ChartWra

是否有一种“内置”方法可以仅使用可见行从仪表板表创建数据视图?在编写一个不必要的冗长备选方案之前,我想知道

编辑:

我在参考文档中遗漏了这一点,但这并不能完全解决问题,因为您仍然需要做一些小动作来获取仪表板上活动过滤器的状态,并将它们传递给getFilteredRows()方法

您可以使用getFilteredRows()方法,该方法“返回与所有给定筛选器匹配的行的行索引。索引按升序返回。此方法的输出可用作DataView.setRows()的输入。”


使用仪表板时需要包装表格的ChartWrapper对象有一个“视图”参数,可用于定义要用于该图表的DataView:

var table = new google.visualization.ChartWrapper({
    chartType: 'Table',
    containerId: 'myTableDiv',
    options: {
        // table options
    },
    view: {
        columns: [/* columns used for the view */]
    }
});

为了让任何可能觉得这很有用的人受益,以下是我解决问题的方法:

首先,从仪表板创建控件状态数组

control_states = [ctrl1.getState(),ctrl2.getState(),ctrl3.getState()];
接下来,为每个控件创建所有选择的数组

var filteredrows = [ ];
var cnt = 0;
for (var i = 0; i < control_states.length; i++) {
  var picker_state = control_states[i]
  for (var j = 0; j < picker_state.selectedValues.length; j++) {
    filteredrows[cnt] = [ ];
    filteredrows[cnt]["column"] = i;
    filteredrows[cnt]["value"] = picker_state.selectedValues[j];
    cnt += 1;
  };
};

你可以尝试寻找和使用第三方插件,你不必只依赖内置的东西。@Raindrop有什么建议吗?对不起,我不知道。我只是个初学者。就我个人而言,我最近从Google Visualization转到了Flot。没问题。无论如何谢谢你!
var filterdata = new google.visualization.DataView(data)
filterdata.setRows(
  filterdata.getFilteredRows(filteredrows)
);