Matplotlib is still by far the most complicated library I have used in my fairly long career (10+ years). I worked with pieces of software for molecular modeling with millions of lines of code that were easier to understand that matplotlib.

It's very powerful, I give them that, if you can think of a figure, it can do it. But you will probably spend an evening trying to make the labels not touch each other.

complexity you can wrap, seaborn style, trading some flexibility for an easier API.

the real "competition" is, I believe, d3.js and visualization grammars built on top of SVG and d3 (vega, vega-lite) that allow amazing interactivity for non-technical users.

you can integrate matplotlib nicely with, e.g., django to deliver server-rendered visuals, but its all static. this relegates matplotlib to exploratory modes (within an IDE or notebook) and production pipelines.

this all might change with pyscript and a browser backend, remains to be seen.

Plotly is real competition and does html interactive stuff. I found it quite easy to use. I still prefer matplotlib though.

plotly offers multiple options (python, R, javascript). the weby stuff is done with plotly.js and uses d3.js underneath - https://github.com/plotly/plotly.js