from pathlib import Path
import csv
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
ROOT=Path(__file__).resolve().parents[2]
rows=list(csv.DictReader((ROOT/'data/research/ai-scorecards-thin-file-comparison/auc-data.csv').open()))
plt.rcParams.update({'font.family':'DejaVu Sans','svg.fonttype':'none','svg.hashsalt':'credit-ai-scorecards-2026-11-03'})
fig,ax=plt.subplots(figsize=(9,6))
fig.subplots_adjust(left=.37,right=.97,bottom=.22,top=.74)
for i,r in enumerate(rows):
 v=float(r['auc']);lo=float(r['ci_low']);hi=float(r['ci_high'])
 ax.errorbar(v,3-i,xerr=[[v-lo],[hi-v]],fmt='o',color='#146346' if r['model']=='Random forest' else '#456d88',capsize=5,markersize=10,linewidth=2)

ax.set_yticks(range(4),[f"{r['model']} / {'traditional' if r['information']=='Traditional' else 'extended'}" for r in rows[::-1]],fontsize=15)
ax.set_xlim(.5,1);ax.set_ylim(-.7,3.7);ax.set_xlabel('AUC; reported 95% confidence intervals',fontsize=14)
ax.set_xticks([.5,.6,.7,.8,.9,1]);ax.tick_params(axis='x',labelsize=14);ax.grid(axis='x',color='#dce2e6');ax.set_axisbelow(True)
ax.set_title('Risk ranking by model and information',loc='left',fontsize=16,pad=18)
fig.suptitle('MYbank SMEs, China; July–August 2017 test: 1,053,748 transactions',fontsize=14)
for side in ['top','right','left']:ax.spines[side].set_visible(False)
fig.text(.01,.04,'Huang et al. (2020), Table 4. Training: March–May 2017. Extended = all study information.',fontsize=10)
out=ROOT/'images/research/ai-scorecards-thin-file-comparison-auc'
fig.savefig(str(out)+'.svg',metadata={'Date':None});fig.savefig(str(out)+'.png',dpi=140);plt.close(fig)
