pls modify my function to print a histogram comparing each metric:
from sklearn.metrics import precision_recall_fscore_support
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import classification_report
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import MultinomialNB
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt
import numpy as np

def compare_classifiers(X_train, X_test, y_train, y_test,method='tfidf'):
    classifiers_tfid = [
        ('Logisti Regression', LogisticRegression(random_state=42)),
        ('Gaussian Naive Bayes', MultinomialNB()),
        ('Rando Forest', RandomForestClassifier(n_estimators=100, random_state=42)),
        ('KNN', KNeighborsClassifier(n_neighbors=5)),
        #('Neural Network', model),
    ]
    classifiers_embeddings =[
        ('RNN', modelRNN),
        ('CNN', modelCNN),
        ('NN', modelNN),
        ('Logisti Regression', LogisticRegression(random_state=42)),
        ('Gaussian Naive Bayes', GaussianNB()),
        ('Rando Forest', RandomForestClassifier(n_estimators=100, random_state=42)),
        ('KNN', KNeighborsClassifier(n_neighbors=5)),
    ]
    if method == 'tfidf':
        classifiers = classifiers_tfid
    else:
        classifiers = classifiers_embeddings
    results = {}
    for name, clf in classifiers:
        if name == 'RNN' or name == 'CNN' or name == 'NN':
            if method == 'tfidf':
                continue
            else:
                y_pred = train_nn(clf,X_train, y_train, X_test, y_test)

        else:    
            clf.fit(X_train, y_train)
            y_pred = clf.predict(X_test)
        
        precision, recall, fscore, _ = precision_recall_fscore_support(y_test, y_pred, average='weighted')
        
        if name not in results:
            results[name] = {'precision': [], 'recall': [], 'fscore': []}
        results[name]['precision'].append(precision)
        results[name]['recall'].append(recall)
        results[name]['fscore'].append(fscore)
    return results

# Initialize a dictionary to hold all results
def compare_seeds(train_test_sets, method='tfidf'):
    all_seeds_results = {}

    for i, (X_train, X_test, y_train, y_test) in enumerate(train_test_sets):
        print(f"---- Random Seed: {i} ----")
        if method == 'tfidf':
            X_train, X_test = tfidf_features(X_train, X_test)
        else:
            X_train, X_test = embeddings_features(X_train, X_test)
        seed_results = compare_classifiers(X_train, X_test, y_train, y_test,method)

        for clf_name, metrics in seed_results.items():
            if clf_name not in all_seeds_results:
                all_seeds_results[clf_name] = {'precision': [], 'recall': [], 'fscore': []}
            
                
            # Accumulate results
            for metric_name, metric_values in metrics.items():
                all_seeds_results[clf_name][metric_name] += metric_values

        # Compute and print averages
    for clf_name, metrics in all_seeds_results.items():
        print(f'----- {clf_name} Average Metrics -----')
        for metric_name, metric_values in metrics.items():
            print(f'{metric_name.capitalize()} Avg: {np.mean(metric_values):.4f}')
        print('\n')