Runtime customization of plots

Hi All,

    I believe this question has been already asked in the past (I
found something at
http://old.nabble.com/A-good,-interactive-plotting-package-td15396445.html).

I use matplotlib extensively in our applications, and some of my users
repetitively asked for a way to customize *in runtime* the plots my
apps generate. I.e., the app brings up a figure with a bunch of lines,
points and texts, and they would like to change this linewidth, the
colour of that point, the appearance of an axis, the legend keys and
so on. I am currently answering "it can't be done at the moment" :-D.
It is obviously not true, it just require some (a lot, maybe) work.

Now, I know nothing about the other backends, but I know something
about wx and I believe it is doable. Obviously, if my job was software
programming and not reservoir engineering I would already have given
it a try, but unfortunately we only get 24 hours per day...

I don't think anything like this already exists, but it's an innocent
question and I hope I won't be kicked for asking :smiley: . If someone
knows about a possible/existing implementation, or even a start of an
implementation, please let me know.

Thank you.

Andrea.

"Imagination Is The Only Weapon In The War Against Reality."
http://xoomer.alice.it/infinity77/
http://thedoomedcity.blogspot.com/

Hello,

I can list three ways to interact with active plots:

1-) Using keyboard shortcuts: Changing scaling using “k” and “l” keys are my favorite. See more at http://matplotlib.sourceforge.net/users/navigation_toolbar.html

2-) Using the interactive navigation toolbar and with a small extension written by Pierre Raybaut (on Qt4Agg backend) For a screenshot see http://img156.imageshack.us/img156/9210/mplqtextra.png

This is open to development. Actually many of the command line mpl interface could be integrated into that window.

3-) Directly from within IPython shell. That’s another useful way of updating figure properties (e.g. adding labels, changing font) IPython and matplotlib are very well integrated in that manner. Similarly, Mayavi does a great job of integrating shell and UI.

···

On Tue, Mar 2, 2010 at 5:57 PM, Andrea Gavana <andrea.gavana@…287…> wrote:

Hi All,

I believe this question has been already asked in the past (I

found something at

http://old.nabble.com/A-good,-interactive-plotting-package-td15396445.html).

I use matplotlib extensively in our applications, and some of my users

repetitively asked for a way to customize in runtime the plots my

apps generate. I.e., the app brings up a figure with a bunch of lines,

points and texts, and they would like to change this linewidth, the

colour of that point, the appearance of an axis, the legend keys and

so on. I am currently answering “it can’t be done at the moment” :-D.

It is obviously not true, it just require some (a lot, maybe) work.

Now, I know nothing about the other backends, but I know something

about wx and I believe it is doable. Obviously, if my job was software

programming and not reservoir engineering I would already have given

it a try, but unfortunately we only get 24 hours per day…

I don’t think anything like this already exists, but it’s an innocent

question and I hope I won’t be kicked for asking :smiley: . If someone

knows about a possible/existing implementation, or even a start of an

implementation, please let me know.

Thank you.

Andrea.

“Imagination Is The Only Weapon In The War Against Reality.”

http://xoomer.alice.it/infinity77/

http://thedoomedcity.blogspot.com/


Gökhan

Hi,

Hi All,

I believe this question has been already asked in the past (I
found something at

http://old.nabble.com/A-good,-interactive-plotting-package-td15396445.html).

I use matplotlib extensively in our applications, and some of my users
repetitively asked for a way to customize *in runtime* the plots my
apps generate. I.e., the app brings up a figure with a bunch of lines,
points and texts, and they would like to change this linewidth, the
colour of that point, the appearance of an axis, the legend keys and
so on. I am currently answering "it can't be done at the moment" :-D.
It is obviously not true, it just require some (a lot, maybe) work.

I can list three ways to interact with active plots:

1-) Using keyboard shortcuts: Changing scaling using "k" and "l" keys are
my favorite. See more at
http://matplotlib.sourceforge.net/users/navigation_toolbar.html

2-) Using the interactive navigation toolbar and with a small extension
written by Pierre Raybaut (on Qt4Agg backend) For a screenshot see
http://img156.imageshack.us/img156/9210/mplqtextra.png
This is open to development. Actually many of the command line mpl interface
could be integrated into that window.

3-) Directly from within IPython shell. That's another useful way of
updating figure properties (e.g. adding labels, changing font) IPython and
matplotlib are very well integrated in that manner. Similarly, Mayavi does a
great job of integrating shell and UI.

Only the second approach slightly resembles what I have in mind.
Navigating the plot using shortcuts and the MPL toolbars is less than
1% of what you can do to customize a MPL plot. Asking a user who knows
nothing about Python (or programming in general) to use the IPython
shell to modify the plot in runtime is unrealistic at best.

The second approach looks interesting (pity it's been done using Qt,
but then, the world is not perfect either...). I could use some of
that code to build something that looks like a *beginning* of a
possible customization of plots (using THE GUI toolkit). I thought
this issue could have been important, as any other 2D/3D plotting
toolkits (commercial and not commercial) have some (or a lot) of
ability to customize their plots once they have been generated...

Andrea.

"Imagination Is The Only Weapon In The War Against Reality."
http://xoomer.alice.it/infinity77/
http://thedoomedcity.blogspot.com/

···

On 3 March 2010 00:18, Gökhan Sever wrote:

On Tue, Mar 2, 2010 at 5:57 PM, Andrea Gavana <andrea.gavana@...287...> > wrote:

Andrea Gavana a écrit :

Only the second approach slightly resembles what I have in mind.
Navigating the plot using shortcuts and the MPL toolbars is less than
1% of what you can do to customize a MPL plot. Asking a user who knows
nothing about Python (or programming in general) to use the IPython
shell to modify the plot in runtime is unrealistic at best.

The second approach looks interesting (pity it's been done using Qt,
but then, the world is not perfect either...). I could use some of
that code to build something that looks like a *beginning* of a
possible customization of plots (using THE GUI toolkit). I thought
this issue could have been important, as any other 2D/3D plotting
toolkits (commercial and not commercial) have some (or a lot) of
ability to customize their plots once they have been generated...

Andrea.
  
Jeremy Sanders initially developed Veusz as backend to Matplotlib but this branch was temporarily abandoned to restart recently.

Matplotlib is THE reference library for scientific graphics under python and Veusz is also an EXCELLENT GUI app for scientific graphics. I think that Veusz+Matplolib could considerably widen their fields of application and theirs user's community if Matplotlib was used as a backend by default. This had already been spoken in veusz's mailing list and after these exchanges a new experimental branch (based on Matplotlib) was born. IMHO Matplotlib has now the object-orientated structure to easily use it for this purpose. Furthermore it now has 3d support as well as quiver plot and much more to offer.

https://mail.gna.org/public/veusz-discuss/2009-04/msg00005.html
https://code.launchpad.net/veusz/experimental

You could also see what Pierre Raybaut has already done with Spyder

http://code.google.com/p/spyderlib/

Regards
Francois