import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv("data.tsv", index_col=0 , sep = "\t") df = df.fillna(0) df = df.sort_values(by=["Total"], ascending=True) fig, ax = plt.subplots(figsize=(16, 8)) ax.bar(df.index, df["Supranational"] , color="#FF0000", width=0.7) ax.bar(df.index, df["Federal or Central"], color="#6794B7", width=0.7, bottom=df["Supranational"] ) ax.bar(df.index, df["State/Regional"] , color="#D480E5", width=0.7, bottom=df["Supranational"] + df["Federal or Central"] ) ax.bar(df.index, df["Local government"], color="#E69717", width=0.7, bottom=df["Supranational"] + df["Federal or Central"] + df["State/Regional"] ) ax.bar(df.index, df["Social Security Funds"], color="#9BBB59", width=0.7, bottom=df["Supranational"] + df["Federal or Central"] + df["State/Regional"]+ df["Local government"] ) ax.legend(df.columns, fontsize=12, ncol=6, loc='center' ,bbox_to_anchor=(0., -0.23, 1., .102) ) ax.set_axisbelow(True) plt.rcParams['font.family'] = 'sans-serif' plt.rcParams['font.sans-serif'] = ['Noto Sans Display'] plt.subplots_adjust(left=0.08, bottom=0.15, right=0.99, top=0.9) plt.title("Tax revenue as % of GDP,2019 (OECD Revenue)", fontsize=26) plt.tick_params(labelsize=10, pad=4) plt.ylabel("% of GDP", size=18) plt.ylim([0,50]) plt.xticks(rotation=60,fontsize=9) plt.yticks(fontsize=13) plt.minorticks_on() plt.grid(which='major',color='#999999',linestyle='-', axis="y") plt.grid(which='minor',color='#cccccc',linestyle='--', axis="y") plt.savefig("image.svg")