From: Fabrice S. <si...@lm...> - 2009-06-29 09:50:57
|
Hello everybody, I wonder whether it is possible to produce something like the zooming plot example from http://code.enthought.com/projects/chaco/gallery.php using only matplotlib. I've done some tests, I think transforms may be helpful but I do not know ho to use them... |
From: Fabrice S. <si...@lm...> - 2009-06-29 13:27:35
|
Le lundi 29 juin 2009 à 07:51 -0400, Pierre GM a écrit : > Check the plotting routines in scikits.timeseries > (pytseries.sourceforge.net), there's some zooming functions that could > get you started. Thanks to point to this scikit, but I looked into the lib.plotlib module, and I didn't manage to find something looking like the 'zoom effect' Chaco provides... I merely wanted to add a Polygon patch between the upper and the lower subplots, but using data coordinates from these axes. -- Fabrice Silva <si...@lm...> LMA UPR CNRS 7051 |
From: Gökhan S. <gok...@gm...> - 2009-06-29 17:12:26
|
On Mon, Jun 29, 2009 at 7:39 AM, Fabrice Silva<si...@lm...> wrote: > Le lundi 29 juin 2009 à 07:51 -0400, Pierre GM a écrit : >> Check the plotting routines in scikits.timeseries >> (pytseries.sourceforge.net), there's some zooming functions that could >> get you started. > > Thanks to point to this scikit, but I looked into the lib.plotlib > module, and I didn't manage to find something looking like the 'zoom > effect' Chaco provides... > > I merely wanted to add a Polygon patch between the upper and the lower > subplots, but using data coordinates from these axes. > -- I have been wondering the same issue whether Chaco's nice zoom plot could be made possible in Matplotlib. I don't have an answer for this yet. If you come up with one, please let me know. In the mean time, you can take a look at: http://www.simile-widgets.org/ They have some interesting and eye-catching time-series plots for web-demonstrations. Gökhan |
From: Ryan M. <rm...@gm...> - 2009-06-29 17:24:42
|
On Mon, Jun 29, 2009 at 12:12 PM, Gökhan SEVER <gok...@gm...>wrote: > On Mon, Jun 29, 2009 at 7:39 AM, Fabrice Silva<si...@lm...> > wrote: > > Le lundi 29 juin 2009 à 07:51 -0400, Pierre GM a écrit : > >> Check the plotting routines in scikits.timeseries > >> (pytseries.sourceforge.net), there's some zooming functions that could > >> get you started. > > > > Thanks to point to this scikit, but I looked into the lib.plotlib > > module, and I didn't manage to find something looking like the 'zoom > > effect' Chaco provides... > > > > I merely wanted to add a Polygon patch between the upper and the lower > > subplots, but using data coordinates from these axes. > > -- > > I have been wondering the same issue whether Chaco's nice zoom plot > could be made possible in Matplotlib. I don't have an answer for this > yet. If you come up with one, please let me know. Have you looked at the examples/widgets/span_selector.py demo? Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma |
From: Fabrice S. <si...@lm...> - 2009-06-29 17:19:55
|
Le lundi 29 juin 2009 à 14:39 +0200, Fabrice Silva a écrit : > I merely wanted to add a Polygon patch between the upper and the lower > subplots, but using data coordinates from these axes. One more precision : my intent is to draw a figure 'statically', I do not need event handling, ie handling manual zoom through an interactive backend. The figure is generated from a script and directly saved without human interaction. -- Fabrice Silva <si...@lm...> LMA UPR CNRS 7051 |
From: Jae-Joon L. <lee...@gm...> - 2009-06-29 20:11:42
Attachments:
demo.png
demo_bbox_connector.py
|
I think the issue here is to connect points in two different axes, which is possible but can be a bit difficult. In the svn version of matplotlib, there are some helper classes to ease this job a bit. I'm attaching the example. I think you can also run the example with 0.98.5.3. Just download inset_locator.py and modify your import statement. http://matplotlib.svn.sourceforge.net/viewvc/matplotlib/trunk/matplotlib/lib/mpl_toolkits/axes_grid/inset_locator.py?revision=7084&view=markup Regards, -JJ On Mon, Jun 29, 2009 at 1:22 PM, Fabrice Silva<si...@lm...> wrote: > Le lundi 29 juin 2009 à 14:39 +0200, Fabrice Silva a écrit : >> I merely wanted to add a Polygon patch between the upper and the lower >> subplots, but using data coordinates from these axes. > > One more precision : my intent is to draw a figure 'statically', I do > not need event handling, ie handling manual zoom through an interactive > backend. The figure is generated from a script and directly saved > without human interaction. > -- > Fabrice Silva <si...@lm...> > LMA UPR CNRS 7051 > > > ------------------------------------------------------------------------------ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: Fabrice S. <si...@lm...> - 2009-06-30 12:10:01
Attachments:
mpl_axes_grid_inset_locator.py
image.png
|
Le lundi 29 juin 2009 à 16:11 -0400, Jae-Joon Lee a écrit : > I think the issue here is to connect points in two different axes, > which is possible but can be a bit difficult. That was my problem > In the svn version of matplotlib, there are some helper classes to > ease this job a bit. Thanks for your pointer. Sadly the mpl.toolkits.axes_grid is not shipped by debian package, and downloading it requires other stuff. So I adapted from the inset_locator.py the attached file. Finally I can "zoom" with the mere script : import matplotlib.pyplot as plt from mpl_axes_grid_inset_locator import zoom_effect S1 = plt.subplot(211) S1.plot(... # xlim (0.,1.2) S2 = plt.subplot(223) S2.plot(... # xlim (0.0095,.012) S3 = plt.subplot(224) S3.plot(... # xlim (0.84,1.) # Labels stuff # [...] patch_props=dict(ec="r", alpha=0.5, fc="r") zoom_effect(S1,S2, 0.01, 0.011, **patch_props) zoom_effect(S1,S3, 0.90, 0.95, **patch_props) It produces two zoom subplots with the wanted patch. |
From: Jae-Joon L. <lee...@gm...> - 2009-06-30 17:21:48
|
Hi Fabrice, Good to hear that you were able to get it work. Here is some tweak on transforms. This way, the plot is shown correctly even if you change the y-limits of axes. trans0 = blended_transform_factory(ax0.transData, ax0.transAxes) trans1 = blended_transform_factory(ax1.transData, ax1.transAxes) bbox = Bbox.from_extents(xmin, 0, xmax, 1) mybbox1 = TransformedBbox(bbox, trans0) mybbox2 = TransformedBbox(bbox, trans1) I think the code is worth to be included as an mpl example. I'll push this into the svn if you don't mind. Regards, -JJ On Tue, Jun 30, 2009 at 8:12 AM, Fabrice Silva<si...@lm...> wrote: > Le lundi 29 juin 2009 à 16:11 -0400, Jae-Joon Lee a écrit : >> I think the issue here is to connect points in two different axes, >> which is possible but can be a bit difficult. > That was my problem > >> In the svn version of matplotlib, there are some helper classes to >> ease this job a bit. > Thanks for your pointer. Sadly the mpl.toolkits.axes_grid is not shipped > by debian package, and downloading it requires other stuff. So I adapted > from the inset_locator.py the attached file. > > Finally I can "zoom" with the mere script : > import matplotlib.pyplot as plt > from mpl_axes_grid_inset_locator import zoom_effect > S1 = plt.subplot(211) > S1.plot(... # xlim (0.,1.2) > S2 = plt.subplot(223) > S2.plot(... # xlim (0.0095,.012) > S3 = plt.subplot(224) > S3.plot(... # xlim (0.84,1.) > # Labels stuff > # [...] > > patch_props=dict(ec="r", alpha=0.5, fc="r") > zoom_effect(S1,S2, 0.01, 0.011, **patch_props) > zoom_effect(S1,S3, 0.90, 0.95, **patch_props) > > It produces two zoom subplots with the wanted patch. > > ------------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > |
From: Fabrice S. <si...@lm...> - 2009-07-04 11:49:37
|
Le mardi 30 juin 2009 à 13:21 -0400, Jae-Joon Lee a écrit : > Hi Fabrice, > > Good to hear that you were able to get it work. > Here is some tweak on transforms. > This way, the plot is shown correctly even if you change the y-limits of axes. > > trans0 = blended_transform_factory(ax0.transData, ax0.transAxes) > trans1 = blended_transform_factory(ax1.transData, ax1.transAxes) > > bbox = Bbox.from_extents(xmin, 0, xmax, 1) > > mybbox1 = TransformedBbox(bbox, trans0) > mybbox2 = TransformedBbox(bbox, trans1) Thanks for these suggestions, I'll try on monday. > I think the code is worth to be included as an mpl example. > I'll push this into the svn if you don't mind. Great ! I assume a BSD license... -- Fabrice Silva <si...@lm...> LMA UPR CNRS 7051 - équipe S2M |
From: Sandro T. <mo...@de...> - 2009-07-01 08:13:31
|
On Tue, Jun 30, 2009 at 14:12, Fabrice Silva<si...@lm...> wrote: > Le lundi 29 juin 2009 à 16:11 -0400, Jae-Joon Lee a écrit : >> In the svn version of matplotlib, there are some helper classes to >> ease this job a bit. > Thanks for your pointer. Sadly the mpl.toolkits.axes_grid is not shipped > by debian package, and downloading it requires other stuff. So I adapted I'm the debian maintainer for matplotlib: if you need something missing in Debian, get in touch with us, for example reporting a bug against matplotlib requesting this toolkit. I didn't check further, but probably it was not release because of this phrase: "In the svn version of matplotlib". Regards, -- Sandro Tosi (aka morph, morpheus, matrixhasu) My website: http://matrixhasu.altervista.org/ Me at Debian: http://wiki.debian.org/SandroTosi |
From: Fabrice S. <si...@lm...> - 2009-07-02 04:14:13
|
Le mercredi 01 juillet 2009 à 10:13 +0200, Sandro Tosi a écrit : > On Tue, Jun 30, 2009 at 14:12, Fabrice Silva<si...@lm...> wrote: > > Le lundi 29 juin 2009 à 16:11 -0400, Jae-Joon Lee a écrit : > >> In the svn version of matplotlib, there are some helper classes to > >> ease this job a bit. > > Thanks for your pointer. Sadly the mpl.toolkits.axes_grid is not shipped > > by debian package, and downloading it requires other stuff. So I adapted > > I'm the debian maintainer for matplotlib: if you need something > missing in Debian, get in touch with us, for example reporting a bug > against matplotlib requesting this toolkit. > > I didn't check further, but probably it was not release because of > this phrase: "In the svn version of matplotlib". Hi Sandro, thanks for packaging matplotlib for debian. I hope you did not understand my words as a blame. In fact mpl_toolkits.axes_grid is still in svn only and not in 0.98.x I tried to download the mpl.toolkits.axes_grid module files, but I had errors raising when importing that... -- Fabrice Silva <si...@lm...> LMA UPR CNRS 7051 |