import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.ticker as ticker
df = pd.read_csv("data.tsv", index_col=0 , sep = "\t")
df = df.fillna(0).div(1000, fill_value=0).fillna(0)
df1 = df.drop('Total', axis=1).T
df2 = df.T.loc['Total']
fig, ax = plt.subplots(figsize=(12, 6))
ax2 = ax.twinx()
ax.plot(df2, label="Total", color="#5E95CD")
ax.fill_between( df2.index ,0, df2.values, color="lightblue", alpha=0.5)
for i in range( len(df1) ):
ax2.bar(df1.columns, df1.iloc[i] , width=1, bottom=df1.iloc[:i].sum())
ax2.legend(df1.index, fontsize=10, ncol=4, loc='upper left', frameon=True, facecolor="#dddddd")
ax.set_ylim([0,3000])
ax2.set_ylim([0,3000])
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['Noto Sans Display']
plt.subplots_adjust(left=0.07, bottom=0.07, right=0.98, top=0.93)
plt.title("Foreign residents in Japan (IPSS)", fontsize=20)
plt.tick_params(labelsize=10, pad=4)
ax.set_ylabel("1000 Population", size=12)
plt.setp(ax.get_xticklabels(), fontsize=8, rotation=75)
plt.setp(ax.get_yticklabels(), fontsize=9 )
ax.xaxis.set_major_locator(ticker.MultipleLocator(2))
ax.yaxis.set_major_locator(ticker.MultipleLocator(250))
ax2.set_yticklabels([])
ax2.set_yticks([])
ax.minorticks_on()
ax.set_axisbelow(True)
ax2.set_axisbelow(True)
ax.grid(True, which='major',color='#cccccc',linestyle='-', axis="y")
ax.grid(True, which='minor',color='#eeeeee',linestyle='--', axis="y")
ax2.grid(None,which='major')
plt.savefig("image.svg")