File size: 2,186 Bytes
cf17729 | 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import matplotlib.pyplot as plt
import seaborn as sns
# ==========================================
# 1. EXTRACTED DATA FROM TERMINAL
# ==========================================
# Error Distribution Data
error_types = ['wrong_column', 'wrong_table', 'ambiguous_column', 'other']
error_counts = [61, 11, 4, 1]
# SQL Operation Analysis Data
sql_ops = ['WHERE', 'JOIN', 'ORDER BY', 'GROUP BY']
op_counts = [55, 36, 20, 14]
# ==========================================
# 2. SET UP THE DASHBOARD LAYOUT
# ==========================================
# Use a clean, modern aesthetic
sns.set_theme(style="whitegrid")
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))
# ==========================================
# 3. PLOT 1: ERROR DISTRIBUTION (Horizontal Bar)
# ==========================================
sns.barplot(x=error_counts, y=error_types, ax=ax1, palette="flare")
ax1.set_title('Primary Cause of Failure (Total: 77 Errors)', fontsize=14, pad=15, fontweight='bold')
ax1.set_xlabel('Number of Queries')
ax1.set_ylabel('')
# Add actual numbers next to the bars
for i, v in enumerate(error_counts):
ax1.text(v + 1.5, i, f"{v}", color='#333333', va='center', fontweight='bold')
# ==========================================
# 4. PLOT 2: SQL OPERATIONS (Vertical Bar)
# ==========================================
sns.barplot(x=sql_ops, y=op_counts, ax=ax2, palette="crest")
ax2.set_title('Clauses Present in Failed Queries', fontsize=14, pad=15, fontweight='bold')
ax2.set_ylabel('Frequency')
ax2.set_xlabel('')
# Add actual numbers on top of the bars
for i, v in enumerate(op_counts):
ax2.text(i, v + 1, str(v), color='#333333', ha='center', fontweight='bold')
# ==========================================
# 5. RENDER AND SAVE
# ==========================================
plt.suptitle('Text-to-SQL Error Diagnostic Dashboard', fontsize=18, fontweight='heavy', y=1.05)
sns.despine(left=True, bottom=True) # Removes clunky borders
plt.tight_layout()
# Save the plot as a high-res image for your report!
plt.savefig('error_diagnostic_plot.png', dpi=300, bbox_inches='tight')
print("✅ Plot successfully saved as 'error_diagnostic_plot.png'")
# Display the plot
plt.show() |