def plot_GZX_evaluation(num_days, accuracy, precision, recall, outfile):

    set_pub()

    days = np.arange(num_days)

    fig = plt.figure(figsize=(8,8))
    ax = fig.add_subplot(111)

    ax.plot(days, accuracy, c='r', label='Accuracy')
    ax.plot(days, precision, c='g', label='Precision')
    ax.plot(days, recall, c='b', label='Recall')
    ax.legend(loc='best')

    ax.set_xlabel('Days in GZ2 project',fontsize=16,fontweight='bold')
    ax.set_ylabel('Per cent',fontsize=16,fontweight='bold')

    plt.savefig("GZX_evaluation_%s.png"%outfile)
    plt.show()
    plt.close()
def plot_retired_GZ_vs_SWAP(GZX_retired, GZ2_retired, num_days,
                            outfilename=None, classifications_per_day=True, 
                            bar=False, expert=False):

    set_pub()

    #--------------------------------------------------------------
    # Make the Figure - Bar Chart

    dates = np.arange(num_days)
    width = 0.35
    

    fig = plt.figure(figsize=(15,10))
    ax = fig.add_subplot(111)

    if classifications_per_day:
        if expert: table = 'task1_expert'
        else: table = 'task1_full'

        try: 
            clicks_per_day = Table.read('%s_classbyday.txt'%table,
                                        format='ascii')
        except:
            fetch_classifications_per_day(num_days, expert=expert)

        # select only up to whatever day we're currently on
        batch = clicks_per_day[:num_days]

        # plot that shit!
        ax.plot(batch['col4'], color='black', alpha=.25)
        gzclass = ax.fill_between(dates,0,batch['col4'],facecolor='black',
                                  alpha=0.20, label='GZ2 classifications')
                                        

    GZX_retired = np.array(GZX_retired)
    GZ2_retired = GZ2_retired[:len(GZX_retired[0,:])]

    if GZX_retired.ndim == 1:
        if bar: 
            tots = ax.bar(dates, GZX_retired, width, color='orange', alpha=0.5)

        else:
            ax.plot(dates, GZX_retired, color='orange')
            tots = ax.fill_between(dates, GZX_retired, color='orange',alpha=0.5)

    else:
        detected = GZX_retired[0,:]
        rejected = GZX_retired[1,:]
        
        if bar:
            dets = ax.bar(dates, detected, width, color='orange',bottom=retired)
            rejs = ax.bar(dates, retired, width, color='yellow')

        else:
            ax.plot(dates, detected+rejected, color='orange')
            dets = ax.fill_between(dates, rejected, detected+rejected, 
                                   color='orange',alpha=0.5)

            ax.plot(dates, rejected, color='yellow')
            rejs = ax.fill_between(dates, rejected, color='yellow', alpha=0.5)


    if bar:
        orig = ax.bar(dates+width, GZ2_retired, width, color='b')

    else:
        ax.plot(dates, GZ2_retired, color='b', alpha=.65)
        orig = ax.fill_between(dates, GZ2_retired, color='b', alpha=0.4)
    
    
    #ax.set_title("Cumulative Number of Classified Subjects", weight='bold')
    ax.set_xlabel("Days in GZ2 project", fontsize=16, weight='bold')
    ax.set_ylabel("Counts", fontsize=16, weight='bold')

    ax.set_xticks(dates[::4]+width)
    ax.set_xticklabels(dates[::4])
    ax.set_xlim(0,num_days-1)
    
    if GZX_retired.ndim > 1 and classifications_per_day:
        legend = ax.legend((dets, rejs, orig, gzclass), 
                           ("GZX: 'Smooth'","GZX: 'Not'", 'GZ2', 
                            'GZ2 user votes'), loc='best')

    elif GZX_retired.ndim > 1:
        legend = ax.legend((dets[0], rejs[0], orig[0]), 
                           ("GZX: 'Smooth'","GZX: 'Not'", 'GZ2'), loc='best')

    elif GZX_retired.ndim == 1 and classifications_per_day:
        legend = ax.legend((tots, orig, gzclass), 
                           ('GZX', 'GZ2', 'GZ2 user votes'), loc='best')

    elif GZX_retired.ndim == 1:
        legend = ax.legend((tots, orig), ('GZX', 'GZ2'), loc='best')

    frame = legend.get_frame()
    frame.set_linewidth(2)
    for label in legend.get_texts():
        label.set_fontsize('large')

    plt.tight_layout()
    plt.savefig('retired_per_day_%s_%idays.png'%(outfilename, num_days))
    plt.show()

    return