Enh update plot

The way in which `plot_components` was implemented was a bit brittle and not very readable. This PR splits the previous functionality into several methods that enables finer control. As a consequence the code is hopefully more readable and resilient.