Вы можете использовать seaborn catplot .
Сначала вы можете агрегировать свои данные, а затем выполнять визуализацию с использованием seaborn.
data_viz = df.groupby(['year','transaction_type','tier'], as_index=False)['no_of_purchases'].sum()
sns.catplot(data=data_viz, x='year', y='no_of_purchases', hue='tier', col='transaction_type', kind='bar')
Но, к сожалению, на основе документация, вы не можете нанести данные с помощью линейного графика.
Хотя есть обходной путь, вы можете сделать что-то вроде этого.
import matplotlib.pyplot as plt
data_viz = df.groupby(['year','transaction_type','tier'], as_index=False)['no_of_purchases'].sum()
for i in list(data_viz['transaction_type'].unique()):
viz = sns.lineplot(data=data_viz[data_viz['transaction_type'] == i], x='year', y='no_of_purchases', hue='tier')
plt.title(i)
plt.show()