code: def bar(self, column_for_categories=None, select=None, overlay=True, width=6, height=4, **vargs):
          
          options = self.default_options.copy()
  
          # Matplotlib tries to center the labels, but we already handle that
          # TODO consider changing the custom centering code and using matplotlib's default
          vargs['align'] = 'edge'
          options.update(vargs)
  
          xticks, labels = self._split_column_and_labels(column_for_categories)
          if select is not None:
              labels = self._as_labels(select)
  
          index = np.arange(self.num_rows)
  
          def draw(axis, label, color):
              axis.bar(index-0.5, self[label], 1.0, color=color, **options)
  
          def annotate(axis, ticks):
              if (ticks is not None) :
                  tick_labels = [ticks[int(l)] if 0<=l<len(ticks) else '' for l in axis.get_xticks()]
                  axis.set_xticklabels(tick_labels, stretch='ultra-condensed')
  
          self._visualize(column_for_categories, labels, xticks, overlay, draw, annotate, width=width, height=height)
docs: Plot bar charts for the table.
  
          Each plot is labeled using the values in `column_for_categories` and
          one plot is produced for every other column (or for the columns
          designated by `select`).
  
          Every selected column except `column_for_categories` must be numerical.
  
          Args:
              column_for_categories (str): A column containing x-axis categories
  
          Kwargs:
              overlay (bool): create a chart with one color per data column;
                  if False, each will be displayed separately.
  
              vargs: Additional arguments that get passed into `plt.bar`.
                  See http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar
                  for additional arguments that can be passed into vargs.