import matplotlib as mpl import numpy as np from cycler import cycler import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv("data.tsv", index_col=0 , sep = "\t") df = df.sort_values(by=["Government/compulsory schemes"], ascending=False) df = df.drop('Government/compulsory schemes', axis=1) df = df.fillna(0).T mpl.rcParams['axes.xmargin'] = 0.02 plt.rcParams['axes.prop_cycle'] = cycler(color=['#93CDDD', '#957ccb', '#E69717', '#D83227', '#A3DF6E', '#d7352b', '#ffd924', '#a652c1', '#686d69']) fig, ax = plt.subplots(figsize=(12, 6)) for i in range( len(df) ): ax.bar(df.columns, df.iloc[i] , width=0.7, bottom=df.iloc[:i].sum()) plt.rcParams['font.family'] = 'sans-serif' plt.rcParams['font.sans-serif'] = ['Noto Sans Display'] plt.subplots_adjust(left=0.08, bottom=0.19, right=0.98, top=0.93) plt.title("Health expenditure by type of financing, 2019 (OECD SOCX)", fontsize=18) plt.tick_params(labelsize=10, pad=4) ax.legend(df.index, fontsize=9, loc='center', ncol=5, frameon=True, facecolor="#dddddd", bbox_to_anchor=(0., -0.28, 1., .102) ) ax.set_axisbelow(True) plt.xticks(df.columns, rotation=70, size=9) plt.yticks(fontsize=13) plt.ylabel("% of Health expenditure", size=13) plt.ylim([0,100]) ax.minorticks_on() plt.grid(which='major',color='#999999',linestyle='-', axis="y") plt.grid(which='minor',color='#cccccc',linestyle='--', axis="y") plt.savefig("image.svg")