File size: 1,179 Bytes
9c7387c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import matplotlib.pyplot as plt
import io
import base64

def generate_federated_learning_plot(client_accuracies):
    """
    Generates a plot showing the training accuracy of each client in a federated learning setting.
    This is a placeholder. You'll need to integrate it with your actual FL framework
    and store the client accuracies during training.
    """
    # Assuming client_accuracies is a dictionary of client_id: accuracy
    client_ids = list(client_accuracies.keys())
    accuracies = list(client_accuracies.values())

    plt.figure(figsize=(10, 6))
    plt.bar(client_ids, accuracies, color='skyblue')
    plt.xlabel('Client ID')
    plt.ylabel('Accuracy')
    plt.title('Federated Learning: Client Accuracies')
    plt.ylim(0, 1)  # Assuming accuracy is between 0 and 1
    plt.xticks(rotation=45, ha='right')
    plt.tight_layout()

    # Convert plot to base64 image
    img_buf = io.BytesIO()
    plt.savefig(img_buf, format='png')
    img_buf.seek(0)
    img_data = base64.b64encode(img_buf.read()).decode('utf-8')
    plt.close()  # Close the plot to free memory
    return f'<img src="data:image/png;base64,{img_data}" alt="Federated Learning Plot"/>'