import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
T="#222222";G="#555555"
plans=["Artesia\nscénario B\n22/10","Station Castle\nscénario A\navec Francis","Station Castle\nscénario B\n(référence)"]
postes=["Hydroloop plan A","V14 sites fossiles et mines","V14 Soleil","V14 Soleil mixte","Pacha et Gold","V18 Sky et Artesia","V15 Canyon","Panneaux hybrides","Joues, corridor, couronne","Titan Claudia","Réseaux","Services d'eau (V19 Station Castle)"]
cols=["#1f4e8c","#3f7fc4","#f2b705","#17a2b8","#2e7d5b","#d9534f","#6a4c93","#c47a12","#e0c070","#7a7a7a","#b0b0b0","#2c7fb8"]
twh=[[9120,1328,2546,2556,483,0,405,831,49,43,0,0]]*3
md=[[4270,546,1187,1176,91,43,747,526,28,49,1000,0],[4270-200,546-20,1187-34,1176-34,91,43,747,526,28,49,1000,157],[4270,546,1187,1176,91,43,747,526,28,49,1000,157]]
fig,(a1,a2,a3)=plt.subplots(1,3,figsize=(20,9),dpi=110,gridspec_kw={"width_ratios":[1,1,0.9]})
fig.patch.set_facecolor("white")
for a,data,titre,u,tot in ((a1,twh,"Électricité fossile remplacée, TWh par an : 17 360, 95 %, les services d'eau ne produisent pas","TWh",["17 360","17 360","17 360"]),(a2,md,"Investissement sur 25 ans, milliards d'euros","Md€",["9 663","9 373\n+ 157 eau","9 663\n+ 157 eau"])):
    x=range(len(plans))
    bas=[0]*3
    for i,p in enumerate(postes):
        v=[d[i] for d in data]
        a.bar(x,v,bottom=bas,color=cols[i],edgecolor="white",lw=0.6,width=0.62,label=p,hatch=("///" if p.startswith("Services") else None))
        bas=[b+w for b,w in zip(bas,v)]
    for xi,b,tt in zip(x,bas,tot):
        a.text(xi,(b+60 if u=="Md€" else b*1.01),tt,ha="center",va="bottom",fontsize=12,color=T,weight="bold",bbox=dict(facecolor="white",edgecolor="none",pad=1.5),zorder=5)
    a.set_xticks(list(x));a.set_xticklabels(plans,fontsize=10,color=T)
    a.set_title(titre,fontsize=11.5,color=T,pad=12)
    a.set_ylabel(u,color=G);a.spines["top"].set_visible(False);a.spines["right"].set_visible(False)
    a.tick_params(axis="y",colors=G);a.set_ylim(0,max(bas)*1.13 if u=="TWh" else 12000)
a2.axhline(10000,color="#c0392b",lw=1.6,ls="--",zorder=1)
a2.text(-0.4,10350,"objectif : 10 000",color="#c0392b",fontsize=11,ha="left",va="bottom",weight="bold")
lab=["Recettes\nd'eau,\nMd€ par an","Pompage\névité,\nTWh par an","Trois jours\nd'eau de réserve,\nmillions de personnes","Assainis,\nmillions de\npersonnes"]
av=[0,0,0,0];ap=[22,27,555,270]
xx=range(4)
a3.bar([i-0.18 for i in xx],[v/25 if i>1 else v for i,v in enumerate(av)],width=0.36,color="#b0b0b0",label="Artesia")
vals=[22,27,555/25,270/25]
a3.bar([i+0.18 for i in xx],vals,width=0.36,color="#2c7fb8",label="Station Castle")
for i,v in enumerate(ap):
    a3.text(i+0.18,vals[i]+0.5,f"{v}",ha="center",va="bottom",fontsize=12,color=T,weight="bold")
    a3.text(i-0.18,0.5,"0",ha="center",va="bottom",fontsize=11,color=G)
a3.set_xticks(list(xx));a3.set_xticklabels(lab,fontsize=9,color=T)
a3.set_title("Ce que les 259 Station Castle et les 2 000 petites stations ajoutent (échelles différentes)",fontsize=10.5,color=T,pad=12)
a3.spines["top"].set_visible(False);a3.spines["right"].set_visible(False);a3.tick_params(axis="y",colors=G);a3.set_ylim(0,32);a3.set_yticks([])
a3.legend(fontsize=10,frameon=False,loc="upper left")
h,l=a1.get_legend_handles_labels()
fig.legend(h,l,loc="lower center",ncol=6,fontsize=10,frameon=False,bbox_to_anchor=(0.5,0.055))
fig.suptitle("Plan mondial Station Castle : le plan Artesia plus le service de l'eau des villes, 259 Hydroloop V19 Station Castle et 2 000 petites stations, 23/10/2026",fontsize=15,color=T,weight="bold",y=0.98)
fig.text(0.5,0.012,"Station Castle : 225 Station Castle 2 sur les Sky 2, 102 châteaux d'eau et 34 stations d'épuration sur les Sky 3 et Artesia, 2 000 stations extensives des petites villes du Sud ; volet eau de 157 Md€ (hachuré) payé par les factures d'eau, compté à part, 22 Md€ de recettes par an ; électricité : 9 663 Md€, comme Artesia.\nScénario A : Francis réversible comptée (-289 Md€). 95 % des fossiles, 1 191 GW garantis le soir, 5,9 TWh de réserve, 410 km³ d'eau régulée, 27 TWh par an de pompage évités. www.mulo.world, CC BY 4.0",ha="center",fontsize=9.5,color=G)
plt.tight_layout(rect=(0,0.14,1,0.95))
plt.savefig("schema_plan_mondial_station_castle.png",dpi=110,facecolor="white")
