字符串过滤器和控制过滤数据的多个谷歌图表 [英] string filter and control filter data more than one google charts

查看:71
本文介绍了字符串过滤器和控制过滤数据的多个谷歌图表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我陷入范围筛选器的谷歌图表堆栈列图只是我想显示的数据与一些range..can你发现什么是类别筛选器的问题?

如何显示筛选器按日期范围?
是否还有其他选项可以按产品名称进行过滤?
提前感谢您................

 

.control {display:inline-block ;}

< script src =https:// ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js\"></script><script src =https://www.gstatic.com/charts/loader.js >< / script>< div id =dashboard>< div class =controlid =string_div>< / div> < div class =controlid =category_div>< / div>< div class =chartid =chart-0>< / div>< / div>< div id =dashboard>< div class =controlid =string_div>< / div> < div class =controlid =category_div>< / div>< div class =chartid =chart-1>< / div>< / div> 控件超出范围,无法通过 drawChart



到达,只需将它们移出 loadData ,



请参阅以下工作片段...

  google.charts.load('current',{packages:['corechart','controls']})。then(function(){// charts重绘var charts = {}; var options = {isStacked:'true',列:{chartArea:{height:'100%',width:'100%',top:60,left:64,right:32,底部:48,},hAxis:{格式:'ddd' },height:'100%',legend:{position:'top'},width:'100%'},Pie:{height:'100%',width:'100%'}}; var formatDate = new google.visualization.DateFormat({pattern:'MMM yyyy'}); var controlCat = new google.visualization.ControlWrapper({controlType:'CategoryFilter',containerId:'category_div',options:{filterColumnIndex:0}}); var controlStr = new google.visualization.ControlWrapper({controlType:'StringFilter',containerId:'string_div',options:{matchType:'any',filterColumnIndex:0}}); //获取数据var jsonData = [{name:p1,data:[[2017/01/01,1.539011],[2017/01/02,4.22612],[2017 / 01/03\" ,9.685247],[ 2017年1月4日,8.535989],[ 2017年1月14日,18.260888],[ 2017年1月15日,57.279945],[2017/01 / 16\" ,61.24776],[ 2017年1月17日,65.12251399999998],[ 2017年1月18日,69.15200200000001],[ 2017年1月19日,73.13965199999997],[ 二零一七年一月二十零日 ,77.10624],[ 2017年1月21日,81.127521],[ 2017年1月22日,85.04579900000002],[ 2017年1月23日,89.003693],[ 2017年1月24日,92.817327 ],[ 2017年1月25日,64.12351600000001],[ 2017年2月4日,4.734462000000001],[ 2017年2月5日,17.073667999999998],[ 2017年2月6日,21.047981999999998] [ 2017年2月7日,16.340846]]},{ 名称: P2, 数据:[[ 2017年1月1日,3.4],[ 2017年1月2日,8.8 ],[ 2017年1月3日,19.4],[ 2017年1月4日,16.9],[ 2017年1月14日,33.8],[ 2017年1月15日,106.19999999999999] [ 2017年1月16日,113.4],[ 2017年1月17日,120.6],[ 2017年1月18日,127.79999999999998],[ 2017年1月19日,135.0],[ 2017年1月20\" 日,142.20000000000002],[ 2017年1月21日,149.5],[ 2017年1月22日,156.6],[ 2017年1月23日,163.79999999999998],[2017 / 01/24\" ,170.70000000000 002],[ 2017年1月25日,118.0],[ 2017年2月4日,9.3],[ 2017年2月5日,32.7],[ 2017年2月6日,39.900000000000006] ,[ 2017年2月7日,30.6],[ 2017年4月14日,16.6]]},{ 名称: P3, 数据:[[ 2017年1月1日, 0.090284],[ 2017年1月2日,0.18148],[ 2017年1月3日,0.36250400000000005],[ 2017年1月4日,0.3223319999999999],[ 2017年1月14日,0.629936] ,[ 2017年1月15日,1.9858830000000007],[ 2017年1月16日,2.117427],[ 2017年1月17日,2.248054],[ 2017年1月18日,2.3795070000000007],[ 2017年1月19日,2.510548],[ 二零一七年一月二十零日 2.6411759999999997],[ 2017年1月21日,2.806806],[ 2017年1月22日,2.9025950000000007],[2017年/01/23\",3.0344140000000004],[\"2017/01/24\",3.156505],[\"2017/01/25\",2.18585],[\"2017/02/04\",0.200327],[\"2017/02 /05\",0.700937],[\"2017/02/06\",0.8522410000000002],[\"2017/02/07\",0.651459]]}]; loadData(jsonData,'0','Column'); //加载json数据函数loadData(jsonData,id,chartType){//创建数据表var dataTable = new google.visualization.DataTable(); switch(chartType){case'Column'://添加日期列dataTable.addColumn('date','Date'); var aggColumns = []; var viewColumns = [0,{calc:function(dt,row){return formatDate.formatValue(dt.getValue(row,0)); },label:dataTable.getColumnLabel(0),type:'string'}]; $ .each(jsonData,function(productIndex,product){//添加产品列var colIndex = dataTable.addColumn('number',product.name); viewColumns.push(colIndex); aggColumns.push({aggregation:google。 visual.data.sum,列:colIndex + 1,标签:dataTable.getColumnLabel(colIndex),类型:dataTable.getColumnType(colIndex)}); //添加产品数据$ .each(product.data,function(dataIndex,data ){var rowIndex = dataTable.addRow(); var rowDate = new Date(data [0]); dataTable.setValue(rowIndex,0,new Date(rowDate.getFullYear(),rowDate.getMonth(),1)); dataTable.setValue(rowIndex,colIndex,data [1]);});}); var dataView = new google.visualization.DataView(dataTable); dataView.setColumns(排列viewColumns); var groupData = google.visualization.data.group(dataView,[0,1],aggColumns); var dataView = new google.visualization.DataView(groupData); dataView.hideColumns([0]); dataTable = dataView;打破; } //绘制图表$(window).resize(function(){drawChart(id,chartType,dataTable);}); drawChart(id,chartType,dataTable); } //绘制图表函数drawChart(id,chartType,dataTable){if(!charts.hasOwnProperty(id)){charts [id] = new google.visualization.ChartWrapper({chartType:'ColumnChart',containerId:'chart- '+ id,options:{isStacked:true}}); } var dash = new google.visualization.Dashboard(document.getElementById('dashboard')); dash.bind([controlCat,controlStr],charts [id]); dash.draw(dataTable中); }});  

.control {display:inline-block ;}

< script src =https:// ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js\"></script><script src =https://www.gstatic.com/charts/loader.js >< / script>< div id =dashboard>< div class =controlid =string_div>< / div> < div class =controlid =category_div>< / div>< div class =chartid =chart-0>< / div>< / div>


i am stuck in range filter for google charts for stack columns graph just i want to display data with some range..can you find what is a problem with category filter?
how can i display filter by date range? is there any other option to filter by product name also? thank you so much in advance ................

google.charts.load('current', {
  packages: ['corechart','controls']
}).then(function () {
  // save charts for redraw
  var charts = {};
  var options = {
    isStacked :'true',
    Column: {
      chartArea: {
        height: '100%',
        width: '100%',
        top: 60,
        left: 64,
        right: 32,
        bottom: 48,
      },
      hAxis: {
        format: 'ddd'
      },
      height: '100%',
      legend: {
        position: 'top'
      },
      width: '100%'
    },
    Pie: {
      height: '100%',
      width: '100%'
    }
  };
  var formatDate = new google.visualization.DateFormat({
    pattern: 'MMM yyyy'
  });

  var controlCat = new google.visualization.ControlWrapper({
    controlType: 'CategoryFilter',
    containerId: 'category_div',
    options: {
      filterColumnIndex: 0
    }
  });

  var controlStr = new google.visualization.ControlWrapper({
    controlType: 'StringFilter',
    containerId: 'string_div',
    options: {
      matchType: 'any',
      filterColumnIndex: 0
    }
  });
  

  // get data
  var jsonData = [{"name":"p1","data":[["2017/01/01",1.539011],["2017/01/02",4.22612],["2017/01/03",9.685247],["2017/01/04",8.535989],["2017/01/14",18.260888],["2017/01/15",57.279945],["2017/01/16",61.24776],["2017/01/17",65.12251399999998],["2017/01/18",69.15200200000001],["2017/01/19",73.13965199999997],["2017/01/20",77.10624],["2017/01/21",81.127521],["2017/01/22",85.04579900000002],["2017/01/23",89.003693],["2017/01/24",92.817327],["2017/01/25",64.12351600000001],["2017/02/04",4.734462000000001],["2017/02/05",17.073667999999998],["2017/02/06",21.047981999999998],["2017/02/07",16.340846]]},{"name":"p2","data":[["2017/01/01",3.4],["2017/01/02",8.8],["2017/01/03",19.4],["2017/01/04",16.9],["2017/01/14",33.8],["2017/01/15",106.19999999999999],["2017/01/16",113.4],["2017/01/17",120.6],["2017/01/18",127.79999999999998],["2017/01/19",135.0],["2017/01/20",142.20000000000002],["2017/01/21",149.5],["2017/01/22",156.6],["2017/01/23",163.79999999999998],["2017/01/24",170.70000000000002],["2017/01/25",118.0],["2017/02/04",9.3],["2017/02/05",32.7],["2017/02/06",39.900000000000006],["2017/02/07",30.6],["2017/04/14",16.6]]},{"name":"p3","data":[["2017/01/01",0.090284],["2017/01/02",0.18148],["2017/01/03",0.36250400000000005],["2017/01/04",0.3223319999999999],["2017/01/14",0.629936],["2017/01/15",1.9858830000000007],["2017/01/16",2.117427],["2017/01/17",2.248054],["2017/01/18",2.3795070000000007],["2017/01/19",2.510548],["2017/01/20",2.6411759999999997],["2017/01/21",2.806806],["2017/01/22",2.9025950000000007],["2017/01/23",3.0344140000000004],["2017/01/24",3.156505],["2017/01/25",2.18585],["2017/02/04",0.200327],["2017/02/05",0.700937],["2017/02/06",0.8522410000000002],["2017/02/07",0.651459]]}];
  loadData(jsonData, '0', 'Column');
  
  var jsonData2 = [{"name":"p1","data":[["2017/01/01",1.539011],["2017/01/02",4.22612],["2017/01/03",9.685247],["2017/01/04",8.535989],["2017/01/14",18.260888],["2017/01/15",57.279945],["2017/01/16",61.24776],["2017/01/17",65.12251399999998],["2017/01/18",69.15200200000001],["2017/01/19",73.13965199999997],["2017/01/20",77.10624],["2017/01/21",81.127521],["2017/01/22",85.04579900000002],["2017/01/23",89.003693],["2017/01/24",92.817327],["2017/01/25",64.12351600000001],["2017/02/04",4.734462000000001],["2017/02/05",17.073667999999998],["2017/02/06",21.047981999999998],["2017/02/07",16.340846]]},{"name":"p2","data":[["2017/01/01",3.4],["2017/01/02",8.8],["2017/01/03",19.4],["2017/01/04",16.9],["2017/01/14",33.8],["2017/01/15",106.19999999999999],["2017/01/16",113.4],["2017/01/17",120.6],["2017/01/18",127.79999999999998],["2017/01/19",135.0],["2017/01/20",142.20000000000002],["2017/01/21",149.5],["2017/01/22",156.6],["2017/01/23",163.79999999999998],["2017/01/24",170.70000000000002],["2017/01/25",118.0],["2017/02/04",9.3],["2017/02/05",32.7],["2017/02/06",39.900000000000006],["2017/02/07",30.6],["2017/04/14",16.6]]},{"name":"p3","data":[["2017/01/01",0.090284],["2017/01/02",0.18148],["2017/01/03",0.36250400000000005],["2017/01/04",0.3223319999999999],["2017/01/14",0.629936],["2017/01/15",1.9858830000000007],["2017/01/16",2.117427],["2017/01/17",2.248054],["2017/01/18",2.3795070000000007],["2017/01/19",2.510548],["2017/01/20",2.6411759999999997],["2017/01/21",2.806806],["2017/01/22",2.9025950000000007],["2017/01/23",3.0344140000000004],["2017/01/24",3.156505],["2017/01/25",2.18585],["2017/02/04",0.200327],["2017/02/05",0.700937],["2017/02/06",0.8522410000000002],["2017/02/07",0.651459]]}];
  loadData(jsonData2, '1', 'Column');
  
  
  
  
  
  
  
  
  
  
  
  
  

  // load json data
  function loadData(jsonData, id, chartType) {
    // create data table
    var dataTable = new google.visualization.DataTable();

    switch (chartType) {
      case 'Column':
        // add date column
        dataTable.addColumn('date', 'Date');
        var aggColumns = [];
        var viewColumns = [0, {
          calc: function (dt, row) {
            return formatDate.formatValue(dt.getValue(row, 0));
          },
          label: dataTable.getColumnLabel(0),
          type: 'string'
        }];

        $.each(jsonData, function(productIndex, product) {
          // add product column
          var colIndex = dataTable.addColumn('number', product.name);
          viewColumns.push(colIndex);
          aggColumns.push({
            aggregation: google.visualization.data.sum,
            column: colIndex+1,
            label: dataTable.getColumnLabel(colIndex),
            type: dataTable.getColumnType(colIndex)
          });

          // add product data
          $.each(product.data, function(dataIndex, data) {
            var rowIndex = dataTable.addRow();
            var rowDate = new Date(data[0]);
            dataTable.setValue(rowIndex, 0, new Date(rowDate.getFullYear(), rowDate.getMonth(), 1));
            dataTable.setValue(rowIndex, colIndex, data[1]);
          });
        });

        var dataView = new google.visualization.DataView(dataTable);
        dataView.setColumns(viewColumns);
        var groupData = google.visualization.data.group(
          dataView,
          [0, 1],
          aggColumns
        );
        var dataView = new google.visualization.DataView(groupData);
        dataView.hideColumns([0]);
        dataTable = dataView;
        break;
    }

    // draw chart
    $(window).resize(function () {
      drawChart(id, chartType, dataTable);
    });
    drawChart(id, chartType, dataTable);
  }

  // draw chart
  function drawChart(id, chartType, dataTable) {
    if (!charts.hasOwnProperty(id)) {
      charts[id] = new google.visualization.ChartWrapper({
        chartType: 'ColumnChart',
        containerId: 'chart-' + id,
        options: {
          isStacked: true
        }
      });
    }
    var dash = new google.visualization.Dashboard(document.getElementById('dashboard'));
    dash.bind([controlCat, controlStr], charts[id]);
    dash.draw(dataTable);
  }

});

.control {
  display: inline-block;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="dashboard">
<div class="control" id="string_div"></div>
  <div class="control" id="category_div"></div>
<div class="chart" id="chart-0"></div>
</div>
<div id="dashboard">
<div class="control" id="string_div"></div>
  <div class="control" id="category_div"></div>
<div class="chart" id="chart-1"></div>
</div>

解决方案

the controls were out of scope, couldn't be reached by drawChart

just needed to move them out of loadData,

see following working snippet...

google.charts.load('current', {
  packages: ['corechart','controls']
}).then(function () {
  // save charts for redraw
  var charts = {};
  var options = {
    isStacked :'true',
    Column: {
      chartArea: {
        height: '100%',
        width: '100%',
        top: 60,
        left: 64,
        right: 32,
        bottom: 48,
      },
      hAxis: {
        format: 'ddd'
      },
      height: '100%',
      legend: {
        position: 'top'
      },
      width: '100%'
    },
    Pie: {
      height: '100%',
      width: '100%'
    }
  };
  var formatDate = new google.visualization.DateFormat({
    pattern: 'MMM yyyy'
  });

  var controlCat = new google.visualization.ControlWrapper({
    controlType: 'CategoryFilter',
    containerId: 'category_div',
    options: {
      filterColumnIndex: 0
    }
  });

  var controlStr = new google.visualization.ControlWrapper({
    controlType: 'StringFilter',
    containerId: 'string_div',
    options: {
      matchType: 'any',
      filterColumnIndex: 0
    }
  });

  // get data
  var jsonData = [{"name":"p1","data":[["2017/01/01",1.539011],["2017/01/02",4.22612],["2017/01/03",9.685247],["2017/01/04",8.535989],["2017/01/14",18.260888],["2017/01/15",57.279945],["2017/01/16",61.24776],["2017/01/17",65.12251399999998],["2017/01/18",69.15200200000001],["2017/01/19",73.13965199999997],["2017/01/20",77.10624],["2017/01/21",81.127521],["2017/01/22",85.04579900000002],["2017/01/23",89.003693],["2017/01/24",92.817327],["2017/01/25",64.12351600000001],["2017/02/04",4.734462000000001],["2017/02/05",17.073667999999998],["2017/02/06",21.047981999999998],["2017/02/07",16.340846]]},{"name":"p2","data":[["2017/01/01",3.4],["2017/01/02",8.8],["2017/01/03",19.4],["2017/01/04",16.9],["2017/01/14",33.8],["2017/01/15",106.19999999999999],["2017/01/16",113.4],["2017/01/17",120.6],["2017/01/18",127.79999999999998],["2017/01/19",135.0],["2017/01/20",142.20000000000002],["2017/01/21",149.5],["2017/01/22",156.6],["2017/01/23",163.79999999999998],["2017/01/24",170.70000000000002],["2017/01/25",118.0],["2017/02/04",9.3],["2017/02/05",32.7],["2017/02/06",39.900000000000006],["2017/02/07",30.6],["2017/04/14",16.6]]},{"name":"p3","data":[["2017/01/01",0.090284],["2017/01/02",0.18148],["2017/01/03",0.36250400000000005],["2017/01/04",0.3223319999999999],["2017/01/14",0.629936],["2017/01/15",1.9858830000000007],["2017/01/16",2.117427],["2017/01/17",2.248054],["2017/01/18",2.3795070000000007],["2017/01/19",2.510548],["2017/01/20",2.6411759999999997],["2017/01/21",2.806806],["2017/01/22",2.9025950000000007],["2017/01/23",3.0344140000000004],["2017/01/24",3.156505],["2017/01/25",2.18585],["2017/02/04",0.200327],["2017/02/05",0.700937],["2017/02/06",0.8522410000000002],["2017/02/07",0.651459]]}];

  loadData(jsonData, '0', 'Column');

  // load json data
  function loadData(jsonData, id, chartType) {
    // create data table
    var dataTable = new google.visualization.DataTable();

    switch (chartType) {
      case 'Column':
        // add date column
        dataTable.addColumn('date', 'Date');
        var aggColumns = [];
        var viewColumns = [0, {
          calc: function (dt, row) {
            return formatDate.formatValue(dt.getValue(row, 0));
          },
          label: dataTable.getColumnLabel(0),
          type: 'string'
        }];

        $.each(jsonData, function(productIndex, product) {
          // add product column
          var colIndex = dataTable.addColumn('number', product.name);
          viewColumns.push(colIndex);
          aggColumns.push({
            aggregation: google.visualization.data.sum,
            column: colIndex+1,
            label: dataTable.getColumnLabel(colIndex),
            type: dataTable.getColumnType(colIndex)
          });

          // add product data
          $.each(product.data, function(dataIndex, data) {
            var rowIndex = dataTable.addRow();
            var rowDate = new Date(data[0]);
            dataTable.setValue(rowIndex, 0, new Date(rowDate.getFullYear(), rowDate.getMonth(), 1));
            dataTable.setValue(rowIndex, colIndex, data[1]);
          });
        });

        var dataView = new google.visualization.DataView(dataTable);
        dataView.setColumns(viewColumns);
        var groupData = google.visualization.data.group(
          dataView,
          [0, 1],
          aggColumns
        );
        var dataView = new google.visualization.DataView(groupData);
        dataView.hideColumns([0]);
        dataTable = dataView;
        break;
    }

    // draw chart
    $(window).resize(function () {
      drawChart(id, chartType, dataTable);
    });
    drawChart(id, chartType, dataTable);
  }

  // draw chart
  function drawChart(id, chartType, dataTable) {
    if (!charts.hasOwnProperty(id)) {
      charts[id] = new google.visualization.ChartWrapper({
        chartType: 'ColumnChart',
        containerId: 'chart-' + id,
        options: {
          isStacked: true
        }
      });
    }
    var dash = new google.visualization.Dashboard(document.getElementById('dashboard'));
    dash.bind([controlCat, controlStr], charts[id]);
    dash.draw(dataTable);
  }

});

.control {
  display: inline-block;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="dashboard">
<div class="control" id="string_div"></div>
  <div class="control" id="category_div"></div>
<div class="chart" id="chart-0"></div>
</div>

这篇关于字符串过滤器和控制过滤数据的多个谷歌图表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆