There is a huge potential for bugs to sneak in via the handling of `color`, `edgecolor` and `facecolor`. Matplotib is not so consistent in how it handles them across the board. This is the case in both precedence, i.e.  do the later two always override the `color`, and when it accepts lists as arguments.

In this case, `facecolor` could not be a list hence requiring a groupby for every rectangle, yet the other two accept lists. Both the before and after are correct, but the after is more economical.