def METHOD_NAME(s):
    #from pylab import *
    import matplotlib.pyplot as plt
    import matplotlib.patches as mpatches
    from matplotlib.collections import PatchCollection
    a_s = np.array(s)
    tnames = list(set(a_s[:,1]))
    #print tnames
    z2 = np.zeros(2)
    ax = plt.gca()
    y0 = 1
    patches = []
    tb = a_s[0, 2]
    tbe = a_s[0, 2]
    for n, tn in enumerate(tnames):
        t_s = a_s[a_s[:,1]==tn, :]
        dm = t_s[:,4].max()
        for fcn, th, ts, te,d in t_s:
            y = d + y0
            #plot(np.array([0, te])+ts, z2 + y, lw=5)
            patches.append(mpatches.Rectangle((ts, y), te, 1))
            plt.text(ts, y + .6*np.random.rand(), fcn[0])
            tb = min(tb, ts)
            tbe = max(tbe, ts+te)
        y0 += dm + 2
    colors = (np.arange(len(patches))%20.)/20.
    collection = PatchCollection(patches, cmap=plt.cm.hsv, alpha=0.3)
    collection.set_array(np.array(colors))
    ax.add_collection(collection)
    plt.show()
    plt.ylim(0, y0)
    plt.xlim(tb, tbe)