I am plotting a percentage stacked bar chart using the following code:
df_q1 = df.groupby(['Q01_response', 'Year']).size().reset_index().pivot(columns='Q01_response', index='Year', values=0)
df_q1 = df_q1[['Always', 'Often','Sometimes','Never']]
stacked_data = df_q1.apply(lambda x: x*100/sum(x), axis=1)
stacked_data.plot(kind="bar", stacked=True, color=['#009933', '#99ff99', '#ff99ff','#ff6666'],figsize=(15, 5))
plt.legend(bbox_to_anchor=(1.05, 1.0), loc='upper left')
#plt.title("Mince Pie Consumption Breakdown")
plt.xlabel("Year")
plt.ylabel("Responses (%)")