ggplot and matplotlib have drastically different purposes. Ggplot is for statistical plots (see seaborn which is built on top of matplotlib for another style of statistical plots library). Matplotlib has multiple interfaces you can use and modern matplotlib code is very consistent and nice to use *if you need full control over your plots* (and it does way more than just statistical plots). The older matplotlib interfaces are indeed a bit of a mess, due to historical reasons.
See bokeh (in python) and makie, gadfly, plots, and AlgebraOfGraphics (in julia) for yet more styles of making high level plots. But again, matplotlib targets users needing more control and less statistics (people build stats and other libraries on top of matplotlib though).
See bokeh (in python) and makie, gadfly, plots, and AlgebraOfGraphics (in julia) for yet more styles of making high level plots. But again, matplotlib targets users needing more control and less statistics (people build stats and other libraries on top of matplotlib though).