How to show axis labels of all subplots when the labels are strings?

You are right, it’s quite cumbersome. What one had to figure out, how the dataframe has to be structured for your visualization goals. But in the end: you already did it!? You could just convert it to a function if your df always looks like this.

Concerning the comment of matching colors: