import matplotlib as mpl import matplotlib.pyplot as plt import pandas as pd import numpy as np df = pd.read_csv("data.tsv", index_col=0 , sep = "\t") fig, ax = plt.subplots(figsize=(14, 5)) x = np.arange(df.index.size) cmap = mpl.colormaps['tab20c'] ax.bar(x-0.3, df["1970"] , color=cmap(3), width=0.2, bottom=0) ax.bar(x-0.1, df["1995"] , color=cmap(2), width=0.2, bottom=0) ax.bar(x+0.1, df["2019"] , color=cmap(1), width=0.2, bottom=0) ax.bar(x+0.3, df["2020"] , color=cmap(0), width=0.2, bottom=0) ax.legend(df.columns, fontsize=12, ncol=4, loc='upper right', frameon=True, facecolor="#dddddd") ax.set_axisbelow(True) plt.rcParams['font.family'] = 'sans-serif' plt.rcParams['font.sans-serif'] = ['Noto Sans Display'] plt.subplots_adjust(left=0.05, bottom=0.17, right=0.99, top=0.9) plt.title("Crude marriage rate (OECD Family Database)", fontsize=20) plt.tick_params(labelsize=10, pad=4) plt.xticks(x, df.index, rotation=80, size=8) plt.ylabel("Marriages per 1000 population", size=11) plt.yticks(fontsize=11) ax.minorticks_on() plt.grid(which='major',color='#999999',linestyle='-', axis="y") plt.grid(which='minor',color='#eeeeee',linestyle='--', axis="y") plt.savefig("image.svg")