The problem seems to originate from this line in lib/matplotlib/sankey.py:

        patch = PathPatch(Path(vertices, codes),
                          fc=kwargs.pop('fc', kwargs.pop('facecolor',
                                        '#bfd1d4')), # Custom defaults
                          lw=kwargs.pop('lw', kwargs.pop('linewidth',
                                        '0.5')),
                          **kwargs)

Note that the linewidth is set to the string '0.5' rather than the float 0.5. 
gc.set_linewidth is then called with the string '0.5' as the argument, which 
triggers the error. If I replace '0.5' by 0.5, the example runs fine with the 
MacOSX backend.

Is there a reason why this needs to be a string here? I would think that in 
general gc.set_linewidth should only accept floats and ints.

-Michiel.




--- On Fri, 1/6/12, Mingkui Li <ken.mk...@gmail.com> wrote:

From: Mingkui Li <ken.mk...@gmail.com>
Subject: [Matplotlib-users] matplotlib 1.1 "TypeError: a float is required" 
problem
To: matplotlib-users@lists.sourceforge.net
Date: Friday, January 6, 2012, 10:54 AM

I just updated matplotlib to 1.1 and want try the new features
Sankey Diagrams
and
Animation
but when I try the api example code: sankey_demo_basics.py

I got the error messages as 
below:==============================================================================Traceback
 (most recent call last):  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/artist.py",
 line 55, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/figure.py",
 line 884, in draw    func(*args)
  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/artist.py",
 line 55, in draw_wrapper    draw(artist, renderer, *args, **kwargs)  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/axes.py",
 line 1983, in draw
    a.draw(renderer)  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/artist.py",
 line 55, in draw_wrapper    draw(artist, renderer, *args, **kwargs)
  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/patches.py",
 line 385, in draw    gc.set_linewidth(lw)TypeError: a float is required
Traceback (most recent call last):  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/artist.py",
 line 55, in draw_wrapper    draw(artist, renderer, *args, **kwargs)
  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/figure.py",
 line 884, in draw    func(*args)  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/artist.py",
 line 55, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/axes.py",
 line 1983, in draw    a.draw(renderer)
  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/artist.py",
 line 55, in draw_wrapper    draw(artist, renderer, *args, **kwargs)  File 
"/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/patches.py",
 line 385, in draw
    gc.set_linewidth(lw)TypeError: a float is 
required==================================================================================
Then I looked into the 
file /Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/matplotlib/patches.py
at the line 384 the code is: gc.set_linewidth(lw)I added  "lw = np.float(lw)" 
before "gc.set_linewidth(lw)", then the example code runs successfully.
Any help?

Thanks for any reply.
-- 
Mingkui Li



-----Inline Attachment Follows-----

------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual 
desktops for less than the cost of PCs and save 60% on VDI infrastructure 
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
-----Inline Attachment Follows-----

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual 
desktops for less than the cost of PCs and save 60% on VDI infrastructure 
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to