# plot.py import matplotlib.pyplot as plt import numpy as np from io import BytesIO from PIL import Image def plot_radar_chart(config): labels = list(config.keys()) values = list(config.values()) # Convert boolean to numeric for plotting values = [1 if v is True else 0 if v is False else v for v in values] angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist() values += values[:1] angles += angles[:1] fig, ax = plt.subplots(figsize=(6, 6), subplot_kw={'polar': True}) ax.plot(angles, values, 'o-', linewidth=2) ax.fill(angles, values, alpha=0.25) ax.set_thetagrids(np.degrees(angles[:-1]), labels) ax.set_title("Trait Radar Chart", fontsize=14) ax.grid(True) buf = BytesIO() plt.tight_layout() plt.savefig(buf, format="png") plt.close(fig) buf.seek(0) return Image.open(buf)