docs: def plot(graph, show_x_axis=True,
               head=None, tail=None, label_length=4, padding=0,
               height=2, show_min_max=True, show_data_range=True,
               show_title=True):
          """
          show_x_axis: Display X axis
          head: Show first [head:] elements
          tail: Show last [-tail:] elements
          padding: Padding size between columns (default 0)
          height: Override graph height
          label_length: Force X axis label string size, may truncate label
          show_min_max: Display Min and Max values on the left of the graph
          show_title: Display graph title (if any)
          show_data_range: Display X axis data range
          """
          def __plot(graph):
              def get_padding_str(label, value):
                  padding_str = ''
                  if  len(label) < label_length:
                      diff = label_length - len(label)
                      padding_str = ' ' * diff
                  padding_str2 = ''
                  if  len(str(value)) < m:
                      diff = m - len(str(value))
                      padding_str2 = ' ' * diff
                  return '%s%s' % (padding_str,padding_str2)
              out = zip(*graph.strings)
              out.reverse()
              if graph.title and show_title:
                  print graph.title
              lines = [sep.join(a) for a in out]
              if show_min_max:
                  lines[0] = lines[0] + "   -- Max: %s" % str(max(graph.data))
                  lines[-1] = lines[-1] + "   -- Min %s" % str(min(graph.data))
              print '\n'.join(lines)
              if graph.labels and show_x_axis:
                  print (u'%s' % x_sep.join(['<%s>[%s]%s'
                          % (label[:label_length], str(v),
                              get_padding_str(label, v))
                              for label, v in zip(graph.labels, graph.data)]))
              if show_data_range and graph.labels:
                  print 'Data range: %s - %s' % (graph.first_x, graph.last_x)
  
          graph.clean_range()
          if head:
              graph.head = head
          if tail:
              graph.tail = tail
  
          if height:
              graph.height = height
  
          if label_length < 1:
              label_length = 4
  
          max_label_length = max(map(len, graph.labels or ['']))
  
          if max_label_length < label_length:
              label_length = max_label_length
  
          sep = ''
          if padding >= 1:
              sep = ' ' * padding
          m = max(map(len, map(str, graph.data)))  # length of longest value
          x_sep = '  '
          if show_x_axis and graph.labels:
              # 2('[])' + 2('<>') + 1 space
              sep = ' ' * (label_length + 1 + 2 + m + 2)
  
          __plot(graph)