| import matplotlib.pyplot as plt |
| import matplotlib.patches as mpatches |
| import numpy as np |
|
|
| systems = ["Ours\n(Sonnet + pipeline)", "Claude\n(direct)", "GPT\n(direct)", "Grok\n(direct)"] |
| mcr = [1.00, 0.85, 0.80, 0.75] |
| mac = [0.910, 0.640, 0.570, 0.550] |
|
|
| x = np.arange(len(systems)) |
| width = 0.32 |
|
|
| fig, ax = plt.subplots(figsize=(8, 5)) |
|
|
| bars_mcr = ax.bar(x - width / 2, mcr, width, label="MCR", color="#4C72B0", zorder=3) |
| bars_mac = ax.bar(x + width / 2, mac, width, label="MAC", color="#DD8452", zorder=3) |
|
|
| ax.set_ylim(0, 1.15) |
| ax.set_ylabel("Score", fontsize=12) |
| ax.set_title("NL→UPPAAL Pipeline: System Comparison\n(MCR = compile rate, MAC = mean correct queries)", fontsize=12) |
| ax.set_xticks(x) |
| ax.set_xticklabels(systems, fontsize=11) |
| ax.axhline(1.0, color="gray", linestyle="--", linewidth=0.8, zorder=2) |
| ax.yaxis.grid(True, linestyle="--", alpha=0.5, zorder=0) |
| ax.set_axisbelow(True) |
| ax.legend(fontsize=11) |
|
|
| for bar in bars_mcr: |
| ax.text(bar.get_x() + bar.get_width() / 2, bar.get_height() + 0.015, |
| f"{bar.get_height():.2f}", ha="center", va="bottom", fontsize=10, fontweight="bold") |
| for bar in bars_mac: |
| ax.text(bar.get_x() + bar.get_width() / 2, bar.get_height() + 0.015, |
| f"{bar.get_height():.3f}", ha="center", va="bottom", fontsize=10, fontweight="bold") |
|
|
| fig.tight_layout() |
| out = "docs/comparison_chart.png" |
| plt.savefig(out, dpi=150) |
| print(f"Saved -> {out}") |
| plt.show() |
|
|