code: def hist_from_counts(counts, normalize=False, cumulative=False, to_str=False, sep=',', min_bin=None, max_bin=None):
      counters = [dict((i, c)for i, c in enumerate(counts))]
      intkeys_list = [[c for c in counts_dict if (isinstance(c, int) or (isinstance(c, float) and int(c) == c))]
                      for counts_dict in counters]
      min_bin, max_bin = min_bin or 0, max_bin or len(counts) - 1
      histograms = []
      for intkeys, counts in zip(intkeys_list, counters):
          histograms += [OrderedDict()]
          if not intkeys:
              continue
          if normalize:
              N = sum(counts[c] for c in intkeys)
              for c in intkeys:
                  counts[c] = float(counts[c]) / N
          if cumulative:
              for i in range(min_bin, max_bin + 1):
                  histograms[-1][i] = counts.get(i, 0) + histograms[-1].get(i - 1, 0)
          else:
              for i in range(min_bin, max_bin + 1):
                  histograms[-1][i] = counts.get(i, 0)
      if not histograms:
          histograms = [OrderedDict()]
      aligned_histograms = []
      for i in range(min_bin, max_bin + 1):
          aligned_histograms += [tuple([i] + [hist.get(i, 0) for hist in histograms])]
      if to_str:
          return str_from_table(aligned_histograms, sep=sep, max_rows=365 * 2 + 1)
      return aligned_histograms