1

我有一个包含以下数据的散点图:

[ 'HDD', 'Oil Consumption']
['100','1000']
['50','500']
['10,'100']

假设每个数据点取自特定日期:

[ 'HDD', 'Oil Consumption', 'Date']
['100','1000','1 January 2015']
['50','500', '1 February 2015']
['10,'100', '1 March 2015']

我如何添加一个过滤器(最好是 DateRangeFilter)来根据日期列进行过滤,即使日期列实际上并不是散点图的一部分。

4

1 回答 1

2

你用ChartWrapper,ControlWrapperDashboard.

这是来自 Google 的与此相关的文档。

基本上,您无需new google.visualization.ScatterChart(document.getElementById('yourId'))使用名为 ChartWrapper 的东西来启动图表(在我看来,这是一种更简单、更易读的方法)。

然后创建一个ControlWrapper(控件(日期范围过滤器)元素的包装器)。

最后ControlWrapper,您ChartWrapper通过您的Dashboard. 您的数据可能类似于:

        var data = google.visualization.arrayToDataTable([
      ['Age', 'Weight', 'Date'],
      [ 8,      12, new Date(2015, 10, 1)],
      [ 4,      5.5, new Date(2015, 10, 2)],
      [ 11,     14, new Date(2015, 10, 3)],
      [ 4,      5, new Date(2015, 10, 4)],
      [ 3,      3.5, new Date(2015, 10, 5)],
      [ 6.5,    7, new Date(2015, 10, 6)]
    ]);

ChartWrapper 可能如下所示:

var scatterWrap = new google.visualization.ChartWrapper({
        chartType:'ScatterChart',
        containerId:'chart_div',
        dataTable:data,
        view:{
            columns:[0, 1] // This makes sure your ScatterChart won't try to use the third column for visualization, that would result in an error.
        }
    });

和这样的 ControlWrapper

var dateRangeWrap = new google.visualization.ControlWrapper({
        controlType:'DateRangeFilter',
        containerId:'dateRange',
        options:{
            filterColumnIndex:2
        }
    });

最后初始化并绑定到您的仪表板:

      var googleDashboard = new google.visualization.Dashboard(document.getElementById('dashboard'));
      googleDashboard.bind(dateRangeWrap, scatterWrap);
      googleDashboard.draw(data);

这一切都将在这个小提琴中结束。(请注意,您需要加载controls而不是corechart在您的 google.load 中)。

于 2015-11-23T15:51:06.727 回答