'Tabulate the given samples from the conditional frequency distribution.
:param samples: The samples to plot
:type samples: list
:param conditions: The conditions to plot (default is all)
:type conditions: list
:param cumulative: A flag to specify whether the freqs are cumulative (default = False)
:type title: bool'

def tabulate(self, *args, **kwargs):

    cumulative = _get_kwarg(kwargs, u'cumulative', False)
    conditions = _get_kwarg(kwargs, u'conditions', sorted(self.conditions()))
    samples = _get_kwarg(kwargs, u'samples', sorted(set((v for c in conditions for v in self[c]))))
    width = max((len((u'%s' % s)) for s in samples))
    freqs = dict()
    for c in conditions:
        if cumulative:
            freqs[c] = list(self[c]._cumulative_frequencies(samples))
        else:
            freqs[c] = [self[c][sample] for sample in samples]
        width = max(width, max((len((u'%d' % f)) for f in freqs[c])))
    condition_size = max((len((u'%s' % c)) for c in conditions))
    print((u'    ' * condition_size), end=u'    ')
    for s in samples:
        print((u'%*s' % (width, s)), end=u'    ')
    print()
    for c in conditions:
        print((u'%*s' % (condition_size, c)), end=u'    ')
        for f in freqs[c]:
            print((u'%*d' % (width, f)), end=u'    ')
        print()
