From: Neal B. <ndb...@gm...> - 2009-01-17 00:17:39
|
pylab.plot (xaxis, log10 (the_sum)*10) where xaxis is numpy array, and log10(the_sum)*10 is my own class that is a valid python sequence (it is a c++ wrapper around boost::ublas), gives: File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- x86_64.egg/matplotlib/pyplot.py", line 2096, in plot ret = gca().plot(*args, **kwargs) File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- x86_64.egg/matplotlib/axes.py", line 3277, in plot for line in self._get_lines(*args, **kwargs): File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- x86_64.egg/matplotlib/axes.py", line 394, in _grab_next_args for seg in self._plot_2_args(remaining, **kwargs): File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- x86_64.egg/matplotlib/axes.py", line 267, in _plot_2_args if is_string_like(tup2[1]): File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- x86_64.egg/matplotlib/cbook.py", line 277, in is_string_like try: obj + '' RuntimeError: check:: failed If I convert the 2nd arg to array, it works: pylab.plot (xaxis, np.array(log10 (the_sum)*10)) Doesn't plot support arbitrary sequences? |
From: Juan Wu <wuj...@gm...> - 2015-05-16 15:50:47
|
Hi, List experts, I have a matplotlib problem when I tried to use a tool called HDDM. As HDDM is another issue, I here just post my problem with Matplotlib. In short, the error alarm appeard when I input fig = plt.figure(). I am a beginner with those stuff. I would appreciate if anyone can give me any good pointers. Thanks so much, Juan ================== In [8]: fig = plt.figure() <matplotlib.figure.Figure at 0x13293890> In [9]: ax = fig.add_subplot(111, xlabel='RT', ylabel='count', title='RT distributions') In [10]: for i, subj_data in data.groupby('subj_idx'): ...: subj_data.rt.hist(bins=20, histtype='step', ax=ax) ...: plt.savefig('hddm_demo_fig_00.pdf') <matplotlib.figure.Figure at 0x1354cb70> Traceback (most recent call last): File "<ipython-input-15-3b0b3c83094c>", line 2, in <module> subj_data.rt.hist(bins=20, histtype='step', ax=ax) File "C:\Anaconda\lib\site-packages\pandas\tools\plotting.py", line 2830, in hist_series raise AssertionError('passed axis not bound to passed figure') AssertionError: passed axis not bound to passed figure (relevant link: https://groups.google.com/forum/#!topic/hddm-users/yBeIRJaHGwo there very few experts view and reply questions) |
From: Thomas C. <tca...@gm...> - 2015-05-16 15:57:12
|
This is coming out of the pandas plotting tools, you might get better answers on their mailing list. Tom On Sat, May 16, 2015 at 11:51 AM Juan Wu <wuj...@gm...> wrote: > Hi, List experts, > > I have a matplotlib problem when I tried to use a tool called HDDM. As > HDDM is another issue, I here just post my problem with Matplotlib. In > short, the error alarm appeard when I input fig = plt.figure(). I am a > beginner with those stuff. > > I would appreciate if anyone can give me any good pointers. > > Thanks so much, > Juan > > ================== > > In [8]: fig = plt.figure() > <matplotlib.figure.Figure at 0x13293890> > > In [9]: ax = fig.add_subplot(111, xlabel='RT', ylabel='count', > title='RT distributions') > > In [10]: for i, subj_data in data.groupby('subj_idx'): > ...: subj_data.rt.hist(bins=20, histtype='step', ax=ax) > ...: plt.savefig('hddm_demo_fig_00.pdf') > > <matplotlib.figure.Figure at 0x1354cb70> > Traceback (most recent call last): > > File "<ipython-input-15-3b0b3c83094c>", line 2, in <module> > subj_data.rt.hist(bins=20, histtype='step', ax=ax) > > File "C:\Anaconda\lib\site-packages\pandas\tools\plotting.py", line > 2830, in hist_series > raise AssertionError('passed axis not bound to passed figure') > > AssertionError: passed axis not bound to passed figure > > (relevant link: > https://groups.google.com/forum/#!topic/hddm-users/yBeIRJaHGwo > there very few experts view and reply questions) > > > ------------------------------------------------------------------------------ > One dashboard for servers and applications across Physical-Virtual-Cloud > Widest out-of-the-box monitoring support with 50+ applications > Performance metrics, stats and reports that give you Actionable Insights > Deep dive visibility with transaction tracing using APM Insight. > http://ad.doubleclick.net/ddm/clk/290420510;117567292;y > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: Benjamin R. <ben...@ou...> - 2015-05-18 16:04:56
|
I noticed in your output that another figure seems to have been created (you see its output as "<matplotlib.figure.Figure at 0x1354cb70>"). It would be useful to add some print statements to figure out exactly which line is emitting that. Second, you are calling "plt.savefig()" in the for-loop for the same filename. I suspect that isn't what you want. I am going to assume that you want to save a final figure after the for-loop is complete, right? Also, it would be more clear to use "fig.savefig()" instead of the more "magical" plt.savefig() as the latter would automatically create a figure if one didn't exist for some reason. Ben Root On Sat, May 16, 2015 at 11:57 AM, Thomas Caswell <tca...@gm...> wrote: > This is coming out of the pandas plotting tools, you might get better > answers on their mailing list. > > Tom > > On Sat, May 16, 2015 at 11:51 AM Juan Wu <wuj...@gm...> wrote: > >> Hi, List experts, >> >> I have a matplotlib problem when I tried to use a tool called HDDM. As >> HDDM is another issue, I here just post my problem with Matplotlib. In >> short, the error alarm appeard when I input fig = plt.figure(). I am a >> beginner with those stuff. >> >> I would appreciate if anyone can give me any good pointers. >> >> Thanks so much, >> Juan >> >> ================== >> >> In [8]: fig = plt.figure() >> <matplotlib.figure.Figure at 0x13293890> >> >> In [9]: ax = fig.add_subplot(111, xlabel='RT', ylabel='count', >> title='RT distributions') >> >> In [10]: for i, subj_data in data.groupby('subj_idx'): >> ...: subj_data.rt.hist(bins=20, histtype='step', ax=ax) >> ...: plt.savefig('hddm_demo_fig_00.pdf') >> >> <matplotlib.figure.Figure at 0x1354cb70> >> Traceback (most recent call last): >> >> File "<ipython-input-15-3b0b3c83094c>", line 2, in <module> >> subj_data.rt.hist(bins=20, histtype='step', ax=ax) >> >> File "C:\Anaconda\lib\site-packages\pandas\tools\plotting.py", line >> 2830, in hist_series >> raise AssertionError('passed axis not bound to passed figure') >> >> AssertionError: passed axis not bound to passed figure >> >> (relevant link: >> https://groups.google.com/forum/#!topic/hddm-users/yBeIRJaHGwo >> there very few experts view and reply questions) >> >> >> ------------------------------------------------------------------------------ >> One dashboard for servers and applications across Physical-Virtual-Cloud >> Widest out-of-the-box monitoring support with 50+ applications >> Performance metrics, stats and reports that give you Actionable Insights >> Deep dive visibility with transaction tracing using APM Insight. >> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> > > > ------------------------------------------------------------------------------ > One dashboard for servers and applications across Physical-Virtual-Cloud > Widest out-of-the-box monitoring support with 50+ applications > Performance metrics, stats and reports that give you Actionable Insights > Deep dive visibility with transaction tracing using APM Insight. > http://ad.doubleclick.net/ddm/clk/290420510;117567292;y > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > |
From: Eric F. <ef...@ha...> - 2009-01-17 02:39:26
|
Neal Becker wrote: > pylab.plot (xaxis, log10 (the_sum)*10) > where xaxis is numpy array, and log10(the_sum)*10 is my own class that is a > valid python sequence (it is a c++ wrapper around boost::ublas), gives: > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > x86_64.egg/matplotlib/pyplot.py", line 2096, in plot > ret = gca().plot(*args, **kwargs) > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > x86_64.egg/matplotlib/axes.py", line 3277, in plot > for line in self._get_lines(*args, **kwargs): > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > x86_64.egg/matplotlib/axes.py", line 394, in _grab_next_args > for seg in self._plot_2_args(remaining, **kwargs): > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > x86_64.egg/matplotlib/axes.py", line 267, in _plot_2_args > if is_string_like(tup2[1]): > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > x86_64.egg/matplotlib/cbook.py", line 277, in is_string_like > try: obj + '' > RuntimeError: check:: failed > > If I convert the 2nd arg to array, it works: > pylab.plot (xaxis, np.array(log10 (the_sum)*10)) > > Doesn't plot support arbitrary sequences? Not *completely* arbitrary, evidently. It has to raise a Python exception when an invalid operation (specifically, adding an empty string) is attempted. Apparently your wrapper is not doing this. This is the duck-typing check for a string that mpl has used from early times. Eric |
From: Neal B. <ndb...@gm...> - 2009-01-17 02:42:16
|
On Friday 16 January 2009, Eric Firing wrote: > Neal Becker wrote: > > pylab.plot (xaxis, log10 (the_sum)*10) > > where xaxis is numpy array, and log10(the_sum)*10 is my own class that is > > a valid python sequence (it is a c++ wrapper around boost::ublas), gives: > > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > > x86_64.egg/matplotlib/pyplot.py", line 2096, in plot > > ret = gca().plot(*args, **kwargs) > > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > > x86_64.egg/matplotlib/axes.py", line 3277, in plot > > for line in self._get_lines(*args, **kwargs): > > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > > x86_64.egg/matplotlib/axes.py", line 394, in _grab_next_args > > for seg in self._plot_2_args(remaining, **kwargs): > > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > > x86_64.egg/matplotlib/axes.py", line 267, in _plot_2_args > > if is_string_like(tup2[1]): > > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > > x86_64.egg/matplotlib/cbook.py", line 277, in is_string_like > > try: obj + '' > > RuntimeError: check:: failed > > > > If I convert the 2nd arg to array, it works: > > pylab.plot (xaxis, np.array(log10 (the_sum)*10)) > > > > Doesn't plot support arbitrary sequences? > > Not *completely* arbitrary, evidently. It has to raise a Python > exception when an invalid operation (specifically, adding an empty > string) is attempted. Apparently your wrapper is not doing this. This > is the duck-typing check for a string that mpl has used from early times. > > Eric Is it possible that this could be better? I'm not sure what's happening here, but I think it is trying to see if my type can be a string first. It can, but that's not a good idea in this case. It should correctly support a sequence (and iterator) protocol. Shouldn't matplotlib try that first? |
From: Eric F. <ef...@ha...> - 2009-01-17 02:46:59
|
Neal Becker wrote: > On Friday 16 January 2009, Eric Firing wrote: >> Neal Becker wrote: >>> pylab.plot (xaxis, log10 (the_sum)*10) >>> where xaxis is numpy array, and log10(the_sum)*10 is my own class that is >>> a valid python sequence (it is a c++ wrapper around boost::ublas), gives: >>> File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- >>> x86_64.egg/matplotlib/pyplot.py", line 2096, in plot >>> ret = gca().plot(*args, **kwargs) >>> File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- >>> x86_64.egg/matplotlib/axes.py", line 3277, in plot >>> for line in self._get_lines(*args, **kwargs): >>> File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- >>> x86_64.egg/matplotlib/axes.py", line 394, in _grab_next_args >>> for seg in self._plot_2_args(remaining, **kwargs): >>> File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- >>> x86_64.egg/matplotlib/axes.py", line 267, in _plot_2_args >>> if is_string_like(tup2[1]): >>> File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- >>> x86_64.egg/matplotlib/cbook.py", line 277, in is_string_like >>> try: obj + '' >>> RuntimeError: check:: failed >>> >>> If I convert the 2nd arg to array, it works: >>> pylab.plot (xaxis, np.array(log10 (the_sum)*10)) >>> >>> Doesn't plot support arbitrary sequences? >> Not *completely* arbitrary, evidently. It has to raise a Python >> exception when an invalid operation (specifically, adding an empty >> string) is attempted. Apparently your wrapper is not doing this. This >> is the duck-typing check for a string that mpl has used from early times. >> >> Eric > Is it possible that this could be better? I'm not sure what's happening here, > but I think it is trying to see if my type can be a string first. It can, but > that's not a good idea in this case. It should correctly support a sequence > (and iterator) protocol. Shouldn't matplotlib try that first? > No, it really needs to find out if it is a string, and a string is iterable, so a string-specific check is needed. Eric |
From: Eric F. <ef...@ha...> - 2009-01-17 02:45:01
|
Neal Becker wrote: > pylab.plot (xaxis, log10 (the_sum)*10) > where xaxis is numpy array, and log10(the_sum)*10 is my own class that is a > valid python sequence (it is a c++ wrapper around boost::ublas), gives: > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > x86_64.egg/matplotlib/pyplot.py", line 2096, in plot > ret = gca().plot(*args, **kwargs) > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > x86_64.egg/matplotlib/axes.py", line 3277, in plot > for line in self._get_lines(*args, **kwargs): > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > x86_64.egg/matplotlib/axes.py", line 394, in _grab_next_args > for seg in self._plot_2_args(remaining, **kwargs): > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > x86_64.egg/matplotlib/axes.py", line 267, in _plot_2_args > if is_string_like(tup2[1]): > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > x86_64.egg/matplotlib/cbook.py", line 277, in is_string_like > try: obj + '' > RuntimeError: check:: failed > > If I convert the 2nd arg to array, it works: > pylab.plot (xaxis, np.array(log10 (the_sum)*10)) > > Doesn't plot support arbitrary sequences? Partial correction to my previous post: is_string_like looks for a TypeError or ValueError to be raised. I suppose we could look for any exception, since your object raises a RuntimeError. I wonder whether it would be equally effective and more robust if the test were try: '' + obj instead of the other way around. Eric |
From: Neal B. <ndb...@gm...> - 2009-01-17 02:44:08
|
On Friday 16 January 2009, Eric Firing wrote: > Neal Becker wrote: > > pylab.plot (xaxis, log10 (the_sum)*10) > > where xaxis is numpy array, and log10(the_sum)*10 is my own class that is > > a valid python sequence (it is a c++ wrapper around boost::ublas), gives: > > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > > x86_64.egg/matplotlib/pyplot.py", line 2096, in plot > > ret = gca().plot(*args, **kwargs) > > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > > x86_64.egg/matplotlib/axes.py", line 3277, in plot > > for line in self._get_lines(*args, **kwargs): > > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > > x86_64.egg/matplotlib/axes.py", line 394, in _grab_next_args > > for seg in self._plot_2_args(remaining, **kwargs): > > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > > x86_64.egg/matplotlib/axes.py", line 267, in _plot_2_args > > if is_string_like(tup2[1]): > > File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- > > x86_64.egg/matplotlib/cbook.py", line 277, in is_string_like > > try: obj + '' > > RuntimeError: check:: failed > > > > If I convert the 2nd arg to array, it works: > > pylab.plot (xaxis, np.array(log10 (the_sum)*10)) > > > > Doesn't plot support arbitrary sequences? > > Partial correction to my previous post: > is_string_like looks for a TypeError or ValueError to be raised. I > suppose we could look for any exception, since your object raises a > RuntimeError. > > I wonder whether it would be equally effective and more robust if the > test were > > try: '' + obj > > instead of the other way around. > > Eric IIRC, boost::python translates c++ exceptions to RuntimeError. If true, then it's a lot easier to fix matplotlib than to fix boost::python wrappers. |
From: Eric F. <ef...@ha...> - 2009-01-17 04:32:26
|
Neal Becker wrote: > On Friday 16 January 2009, Eric Firing wrote: >> Neal Becker wrote: >>> pylab.plot (xaxis, log10 (the_sum)*10) >>> where xaxis is numpy array, and log10(the_sum)*10 is my own class that is >>> a valid python sequence (it is a c++ wrapper around boost::ublas), gives: >>> File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- >>> x86_64.egg/matplotlib/pyplot.py", line 2096, in plot >>> ret = gca().plot(*args, **kwargs) >>> File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- >>> x86_64.egg/matplotlib/axes.py", line 3277, in plot >>> for line in self._get_lines(*args, **kwargs): >>> File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- >>> x86_64.egg/matplotlib/axes.py", line 394, in _grab_next_args >>> for seg in self._plot_2_args(remaining, **kwargs): >>> File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- >>> x86_64.egg/matplotlib/axes.py", line 267, in _plot_2_args >>> if is_string_like(tup2[1]): >>> File "/usr/lib/python2.5/site-packages/matplotlib-0.98.5.2-py2.5-linux- >>> x86_64.egg/matplotlib/cbook.py", line 277, in is_string_like >>> try: obj + '' >>> RuntimeError: check:: failed >>> >>> If I convert the 2nd arg to array, it works: >>> pylab.plot (xaxis, np.array(log10 (the_sum)*10)) >>> >>> Doesn't plot support arbitrary sequences? >> Partial correction to my previous post: >> is_string_like looks for a TypeError or ValueError to be raised. I >> suppose we could look for any exception, since your object raises a >> RuntimeError. >> >> I wonder whether it would be equally effective and more robust if the >> test were >> >> try: '' + obj >> >> instead of the other way around. >> >> Eric > > IIRC, boost::python translates c++ exceptions to RuntimeError. If true, then > it's a lot easier to fix matplotlib than to fix boost::python wrappers. After poking around a little, I conclude that there is nothing gained by having is_string_like look for particular exceptions, so I will relax that, which should solve your problem with no negative consequences for anything else. I've committed the change to the 98.5 maintenance branch, but I'm having trouble with svnmerge, so I don't know how long it will take to get it into the trunk. Eric |