code: function() {
      if(this.busy) { console.log('fuck, busy'); return; }
      this.busy = true;
      if(this.config.Tips.enable) this.st.tips.hide();
      this.select(false, false, false);
      var args = Array.prototype.slice.call(arguments);
      var rt = this.st.graph.getNode(this.st.root);
      var that = this;
      console.log('filter:', args);
      rt.eachAdjacency(function(adj) {
        var n = adj.nodeTo, 
            dimArray = n.getData('dimArray'),
            stringArray = n.getData('stringArray');
        n.setData('dimArray', $.map(dimArray, function(d, i) {
          return ($.indexOf(args, stringArray[i]) > -1)? d:[0, 0];
        }), 'end');
      });
      this.st.fx.animate({
        modes: ['node-property:dimArray'],
        duration:10,
        onComplete: function() {
          that.busy = false;
        }
      });
    }
docs: /*
  Method: filter
  
  Filter selected stacks, collapsing all other stacks. You can filter multiple stacks at the same time.
  
  Parameters:
  
  Variable strings arguments with the name of the stacks.
  
  Example:
  
  (start code js)
  areaChart.filter('label A', 'label C');
  (end code)
  
  See also:
  
  <AreaChart.restore>.