It sounds like the above solutions worked for you, but to avoid
changing global names and options which might cause other side effects
you could also do:

import pylab as p
p.close()
pos=p.arange(4.0,dtype=float)
width=float(0.35)
dat=p.array([-2.0,10.4,30.0,29.9],dtype=float)
p.bar(pos,dat,width,color='b')
p.savefig('sage.png')

...i.e. even though 4.0 gets turned into a RealNumber, it gets cast
back to a float later; only the width needs to be cast once your dtype
= float commands are in the arange and array functions.

-M. Hampton

On Jun 1, 2:20 pm, tkeller <[EMAIL PROTECTED]> wrote:
> This worked perfectly.  Thanks again.
> Thomas
>
> On Jun 1, 3:05 pm, "Mike Hansen" <[EMAIL PROTECTED]> wrote:
>
> > Hi Thomas,
>
> > The issue comes from Pylab not knowing how to deal with instances of
> > Sage's RealNumber class.  When you do "4.0" from the command line, it
> > gets changed into "RealNumber('4.0')".  You can see this with the
> > following commands:
>
> > sage: preparse('4.0')
> > "RealNumber('4.0')"
>
> > In order to get Pylab to work as expected there are two easy solutions:
>
> > 1) Run "RealNumber = float" to get Sage to return Python floats
> > instead of RealNumbers.  See below:
>
> > sage: type(4.0)
> > <type 'sage.rings.real_mpfr.RealNumber'>
> > sage: RealNumber = float
> > sage: type(4.0)
> > <type 'float'>
>
> > 2) Turn off the preparser when using Pylab:
>
> > sage: preparser(False)
> > sage: type(4.0)
> > <type 'float'>
>
> > Hope this helps.
>
> > --Mike
>
> > On Sun, Jun 1, 2008 at 12:57 PM, tkeller <[EMAIL PROTECTED]> wrote:
>
> > > Hi folks,
> > > Sorry to bombard the mailing list with questions, I'm starting to use
> > > sage for more and more things lately.  I'm trying to get a figure
> > > together for a paper and thought I'd try using the bar() command in
> > > pylab. However, the following code (modeled after an example in
> > > matplotlib) gives an error.  I thought maybe a problem with number
> > > coercion was causing the issue, but explicitly casting the numbers as
> > > floats has no effect. I should mention that I'm completely new to
> > > matplotlib, so it could be that I'm just not supplying arguments
> > > correctly.
>
> > > import pylab as p
> > > p.close()
> > > pos=p.arange(4.0,dtype=float)
> > > width=0.35
> > > dat=p.array([-2.0,10.4,30.0,29.9],dtype=float)
> > > p.bar(pos,dat,width,color='b')
> > > p.savefig('sage.png')
>
> > > This returns :
> > >  File "/home/thomas/.sage/sage_notebook/worksheets/admin/10/code/
> > > 2.py", line 11, in <module>
> > >    p.bar(pos,dat,width,color='b')
> > >  File "/home/thomas/sage/local/lib/python2.5/site-packages/matplotlib/
> > > pyplot.py", line 1402, in bar
> > >    ret =  gca().bar(*args, **kwargs)
> > >  File "/home/thomas/sage/local/lib/python2.5/site-packages/matplotlib/
> > > axes.py", line 3293, in bar
> > >    self.add_patch(r)
> > >  File "/home/thomas/sage/local/lib/python2.5/site-packages/matplotlib/
> > > axes.py", line 1145, in add_patch
> > >    self._update_patch_limits(p)
> > >  File "/home/thomas/sage/local/lib/python2.5/site-packages/matplotlib/
> > > axes.py", line 1153, in _update_patch_limits
> > >    self.update_datalim(xys)
> > >  File "/home/thomas/sage/local/lib/python2.5/site-packages/matplotlib/
> > > axes.py", line 1180, in update_datalim
> > >    self.dataLim.update_numerix_xy(xys, -1)
> > > TypeError: Bbox::update_numerix_xy expected numerix array
>
> > > If anyone has some insight into this, I'd greatly appreciate it.
> > > Thomas
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to