from pathlib import Path
import pandas as pd,numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
R=Path(__file__).resolve().parent;p=pd.read_csv(R/'available_language_profiles.csv');d=pd.read_parquet(R/'observations.parquet')
ids=[1859910,2088160,2842800,3561220,3470560,2755330,1817940,2246340]
names=d.set_index('appid')['name'].to_dict();langorder=['english','schinese','tchinese','russian','koreana','japanese'];labels=['English','Simplified Chinese','Traditional Chinese','Russian','Korean','Japanese'];colors=['#286a83','#b74649','#dd8b83','#cca849','#9b71b0','#71a4a1']
plt.rcParams.update({'font.family':['DejaVu Sans','Noto Sans CJK TC'],'font.size':11,'axes.spines.top':False,'axes.spines.right':False})
fig,ax=plt.subplots(figsize=(13,6));a=p.pivot(index='appid',columns='language',values='share').reindex(ids).fillna(0);left=np.zeros(len(ids))
for lang,label,color in zip(langorder,labels,colors):
    v=a[lang].to_numpy()*100;ax.barh(np.arange(len(ids)),v,left=left,color=color,label=label,height=.67);left+=v
ax.barh(np.arange(len(ids)),100-left,left=left,color='#dedede',label='Other / unreported languages',height=.67)
ax.set_yticks(np.arange(len(ids)),[names[x] for x in ids]);ax.invert_yaxis();ax.set_xlim(0,100);ax.set_xlabel('Share of all-language Steam-purchase reviews (%)');ax.legend(loc='upper center',bbox_to_anchor=(.5,-.14),ncol=4,frameon=False,fontsize=9)
ax.set_title('Selected examples: English share and different non-English majorities\nScored-language subsets; grey includes unreported languages, not measured zeros.',loc='left',fontweight='bold',pad=20)
fig.tight_layout(rect=[0,.1,1,1]);fig.savefig(R/'selected_language_profiles.png',dpi=170);fig.savefig(R/'selected_language_profiles.svg');plt.close(fig)
