Matplotlib phylosophy

Hi All,

Been reading this mail-list for a long time, I came to a conclusion,
that principal structure of the program is not well thought.

Look at the ton of mails where is asking how to change one or another parameter
in the given Plot. People just don't remember all functions or variables which
provide needed functionality.

It means that Matplotlib is cumbersome and not easy to overview.

From other point of view most people use often the same plot format

they've chosen
some times ago. So they don't need to change the elements format for every Plot.

Looking at matplotlibrc file we'll see, that it has to much parameters
defined by default.
Either you keep they as is, or you'll have to change most of them to produce
Plot you want. The problem hidden here is non compatibility. You can't
send script to
another machine and produce the same plot.

Having the same matplotlibrc file for all is not possible. Cause
everyone has his own view
how it should look like.

That means, to make the script compatible you have to change all
parameters you want
within the script. It's only one working solution for now.

But, it looks ugly and makes code way too long it could be.

What is the solution of all this issues?

First, we have to understand that every Plot could be described with a
markup language,
cause it's nothing else as a vector graph.
And building of such a plot is differ from the solution of
mathematical equation.
In the last case only the result is important, but for the plot even
the part of them is the vector graph.
And every part of it could be rendered separately. Almost separately...

Understanding of this can push the development of matplotlib further.
We don't need matplotlibrc anymore, but just a template file for every plot.
It could be the base template file, where main parameters described and also
custom template where maybe some partial parameters defined, like
Legend, size of the plot, scale etc.
The matplotlib in that case should produce the plot from known
parameters leaving not known
parameters not visible. Just imaging the Plot without any graphic curve on it.
It could be processed without knowing how the curve looks like.
Rendering it and saving
into the svg file or meta svg file for example you may drastically
improve the time needed for the
rendering the finished plot with certain curve on it. Taking some
coordinates from the template
you need to calculate only the curve from the given data table.
And moreover user don't have to care about format of many elements
like text size distance between elements, alignment etc...

Generating the similar plot can be improved. But even the keeping of
the same style
of different plot for a publication is easy possible.

From the developing point of view using tons of function to adjust one

or another parameters from a million is not really a nice solution.
Even the object paradigm doesn't help here.

Actually what we have to do is just _to describe_ how our plot should look like.
So why to program anything if it's easier to describe?

For that such languages like json or yaml could be utilized. And the
matplotlib have to
parse the code and generate kind of template where you can put your data.

Then one can really produce 3 lines code to plot his data in any way he wants.

It will also help to integrate the matplotlib with any software which
produces vector drawings.

Please, answer what do you think about it.
Thanks for comments.