I realize this topic is pretty old, but since I ran into this error myself recently....
It's incorrect to say:
Something is broken well beyond the realm of backtrader
While it's true that this error occurs in the guts of matplotlib, it happens because Backtrader is incorrectly assuming it's running inside a Jupyter notebook and therefore configuring matplotlib with an incorrect backend.
The fix is to use cerebro.plot(iplot=False)
when not running inside a Jupyter notebook.
See:
https://www.backtrader.com/blog/posts/2016-09-17-notebook-inline/notebook-inline/
and:
https://community.backtrader.com/topic/2106/cerebro-plot-error/4