import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
T="#222222";G="#555555"
plans=["Artesia 2\nscénario B\n23/10","Artesia 3\nscénario B\n26/10","Artesia 4\nscénario A\navec Francis","Artesia 4\nscénario B\n(référence)"]
postes=["V14 de crête","V11, V5-V6, V3 du plan A","V14 sites fossiles et mines","V14 Soleil","V14 Soleil mixte","V21 sur barrages existants","Pacha et Gold","V18 Sky","V15 Canyon","Panneaux hybrides et joues","Titan Claudia","Réseaux","Volet eau (Station Castle)"]
cols=["#1f4e8c","#7fa6d9","#3f7fc4","#f2b705","#17a2b8","#8c564b","#2e7d5b","#d9534f","#6a4c93","#c47a12","#7a7a7a","#b0b0b0","#2c7fb8"]
twh=[[4425,2140,1328,4102,4118,0,540,0,405,258,43,0,0],[4425,0,1328,5326,5086,0,746,0,405,0,43,0,0],[3388,0,1328,10982,67,222,924,0,405,0,43,0,0],[3388,0,1328,10982,67,222,924,0,405,0,43,0,0]]
md=[[1820,1090,546,1911,1895,0,102,45,747,152,49,1000,161],[1820,0,546,2288,2250,0,140,57,747,0,49,1000,179],[1233-109,0,546-20,4750-137,32-1,90,174,65,747,0,49,1000,191],[1233,0,546,4750,32,90,174,65,747,0,49,1000,191]]
fig,(a1,a2,a3)=plt.subplots(1,3,figsize=(21,9),dpi=110,gridspec_kw={"width_ratios":[1.1,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 %, le même objectif","TWh",["17 360","17 360","17 360","17 360"]),(a2,md,"Investissement sur 25 ans, milliards d'euros","Md€",["9 358\n+ 161 eau","8 897\n+ 179 eau","8 418\n+ 191 eau","8 685\n+ 191 eau"])):
    x=range(len(plans))
    bas=[0]*4
    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("Volet") 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(3.45,11000,"objectif : moins de 10 000",color="#c0392b",fontsize=11,ha="right",va="bottom",weight="bold")
lab=["Sites de centrales\nHydroloop neuves","Photovoltaïque,\nGWc","Grandes éoliennes,\nGW","M€ investis par\nGWh annuel"]
sc=[1/1000.0,1/100.0,1/100.0,100.0]
vals=[[45220,3850,2916,0.539],[17661,4230,2779,0.512],[16533,6010,1526,0.500]]
txt=[["45 220","3 850","2 916","0,539"],["17 661","4 230","2 779","0,512"],["16 533","6 010","1 526","0,500"]]
noms=["Artesia 2","Artesia 3","Artesia 4"];cc=["#b0b0b0","#7fa6d9","#2c7fb8"]
xx=range(4)
for j in range(3):
    a3.bar([i+(j-1)*0.27 for i in xx],[v*s for v,s in zip(vals[j],sc)],width=0.26,color=cc[j],label=noms[j])
    for i in xx: a3.text(i+(j-1)*0.27,vals[j][i]*sc[i]+1,txt[j][i],ha="center",va="bottom",fontsize=8 if j<2 else 10.5,color=G if j<2 else T,weight="normal" if j<2 else "bold",rotation=90 if j<2 else 0)
a3.set_xticks(list(xx));a3.set_xticklabels(lab,fontsize=9,color=T)
a3.set_title("Ce que les sites mesurés changent (é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,110);a3.set_yticks([])
a3.legend(fontsize=10,frameon=False,loc="upper right")
h,l=a1.get_legend_handles_labels()
fig.legend(h,l,loc="lower center",ncol=7,fontsize=10,frameon=False,bbox_to_anchor=(0.5,0.055))
fig.suptitle("Plan mondial Artesia 4 : les crêtes, les plateaux et les barrages mesurés, une seule liste classée au coût du GWh, 8 685 milliards au lieu de 8 897, 27/10/2026",fontsize=15,color=T,weight="bold",y=0.98)
fig.text(0.5,0.008,"Artesia 4 : 26 528 emplacements comptés dans une seule liste, plateaux de la ceinture du soleil, crêtes ventées près des villes (vent de l'atlas moins 10 %) et barrages de pointe au soleil (deux sur trois), classés au M€ par GWh et pris dans l'ordre.\n3 387 V14 de crête, 10 177 V14 Soleil, 69 mixtes là où le rebord a son vent, 1 560 barrages existants, 2 426 lacs de Pacha et 1 140 Gold ; les 1 500 V14 des sites fossiles, les 1 000 V15, les 1 500 tours et les 1 000 Md€ de réseaux restent.\n95 % des fossiles pour 8 685 Md€ (B), 8 418 avec la Francis (A) ; volet eau 191 Md€ (hachuré) payé par les factures d'eau ; 1 042 GW garantis le soir, 8,6 TWh de réserve, 778 km³ d'eau régulée par an. www.mulo.world, CC BY 4.0",ha="center",fontsize=9.5,color=G)
plt.tight_layout(rect=(0,0.15,1,0.95))
plt.savefig("schema_plan_mondial_artesia_4.png",dpi=110,facecolor="white")
