//  [python]
def save_results(self, ctr_results, diversity_score, enticement_score, data_set_type):
        
        # --------- Model CTR Bar (not shown, but saved) ---------------- #
        tmp = pd.DataFrame(ctr_results)
        ax = sns.catplot(x="model", y="ctr_score", data=tmp, height=6, kind="bar")
        ax.set(xlabel='Model', ylabel='CTR (%)', title="CTR performance of notifications")
        plt.savefig(self.dir_path+'/results/'+data_set_type+'/task1/ctr_results.png', bbox_inches='tight')
        plt.clf()
        
        
        # --------- AdaBoost CTR Donut ---------------- #
        adaboost_score = ctr_results[0]['ctr_score']
        if round(adaboost_score, 2) == 50.00:
            adaboost_score = 50.01
        plt.rcParams.update({'font.size': 22})
        fig, ax = plt.subplots(figsize=(7, 7), subplot_kw=dict(aspect="equal"))
        size=[round(adaboost_score,2), round(np.absolute(100-adaboost_score),2)]
        my_circle=plt.Circle( (0,0), 0.7, color='white')
        plt.pie(size, autopct=self.autopct_generator(round(np.absolute(100-adaboost_score),2)),
                pctdistance=0.01, colors=['aquamarine','peachpuff'])
        ax.set_title("Click-Through-Rate Score", fontsize= 22)
        p=plt.gcf()
        p.gca().add_artist(my_circle)
        plt.savefig(self.dir_path+'/results/'+data_set_type+'/task1/ctr_pie.png', bbox_inches='tight')
        
        # --------- Enticement Donut ---------------- #
        if round(enticement_score, 2) == 50.00:
            enticement_score = 49.99
        plt.rcParams.update({'font.size': 22})
        fig, ax = plt.subplots(figsize=(7, 7), subplot_kw=dict(aspect="equal"))
        size=[round(enticement_score,2), round(np.absolute(100-enticement_score),2)]
        my_circle=plt.Circle( (0,0), 0.7, color='white')
        plt.pie(size, autopct=self.autopct_generator(round(np.absolute(100-enticement_score),2)),
                pctdistance=0.01, colors=['peachpuff','aquamarine'])
        ax.set_title("Enticement Score", fontsize= 22)
        p=plt.gcf()
        p.gca().add_artist(my_circle)
        plt.savefig(self.dir_path+'/results/'+data_set_type+'/task1/enticement_pie.png', bbox_inches='tight')
        
        # --------- Diversity Donut ---------------- #
        if round(diversity_score, 2) == 50.00:
            diversity_score = 50.01
        plt.rcParams.update({'font.size': 22})
        fig, ax = plt.subplots(figsize=(7, 7), subplot_kw=dict(aspect="equal"))
        size=[round(diversity_score,2), round(np.absolute(100-diversity_score),2)]
        my_circle=plt.Circle( (0,0), 0.7, color='white')
        plt.pie(size, autopct=self.autopct_generator(round(np.absolute(100-diversity_score),2)),
                pctdistance=0.01, colors=['aquamarine','peachpuff'])
        ax.set_title("Diversity Score", fontsize= 22)
        p=plt.gcf()
        p.gca().add_artist(my_circle)
        plt.savefig(self.dir_path+'/results/'+data_set_type+'/task1/diversity_pie.png', bbox_inches='tight')
        
        plt.show()
        ctr_results.append({'metric': 'diversity_score', 'score': diversity_score})
        ctr_results.append({'metric': 'enticement_score', 'score': enticement_score})
        joblib.dump(ctr_results, self.dir_path+'/results/'+data_set_type+'/task1/results.joblib')
        
        print('Results saved here: ', self.dir_path+'/results/'+data_set_type+'/task1/')