I am experimenting with my idea for utilizing a _draworder attribute in
Collection objects. Since not everything in a collection is guaranteed to
be the same length or even be numpy arrays, I have to add some logic to
coerce everything to numpy arrays and tile their data so that the length of
their first axis match up.

I also have logic to convert all objects back to their original types prior
to continuing, just in case that makes any difference.

However, using AGG seems to fail here:

Traceback (most recent call last):
  File "/home/ben/miniconda/lib/python2.7/site-packages/nose/case.py", line
197, in runTest
    self.test(*self.arg)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/testing/decorators.py",
line 51, in failer
    result = f(*args, **kwargs)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/testing/decorators.py",
line 183, in do_test
    figure.savefig(actual_fname, **self._savefig_kwarg)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/figure.py",
line 1490, in savefig
    self.canvas.print_figure(*args, **kwargs)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/backend_bases.py",
line 2211, in print_figure
    **kwargs)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/backends/backend_agg.py",
line 525, in print_png
    FigureCanvasAgg.draw(self)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/backends/backend_agg.py",
line 472, in draw
    self.figure.draw(self.renderer)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/artist.py",
line 60, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/figure.py",
line 1094, in draw
    func(*args)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/mpl_toolkits/mplot3d/axes3d.py",
line 273, in draw
    ax.draw(renderer)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/mpl_toolkits/mplot3d/axis3d.py",
line 370, in draw
    self.gridlines.draw(renderer, project=True)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/mpl_toolkits/mplot3d/art3d.py",
line 203, in draw
    LineCollection.draw(self, renderer)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/artist.py",
line 60, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/collections.py",
line 345, in draw
    self._offset_position)
  File
"/home/ben/miniconda/lib/python2.7/site-packages/matplotlib-1.5.dev1-py2.7-linux-x86_64.egg/matplotlib/backends/backend_agg.py",
line 127, in draw_path_collection
    return self._renderer.draw_path_collection(*kl, **kw)
SystemError: new style getargs format but argument is not a tuple

The PDF and SVG backends aren't experiencing this problem. I have taken out
the parts of my code that "broadcasted" the arrays, and the error still
happens. I then took out the code that coerced everything to numpy arrays
in the first place, and the error disappeared (taking that out effectively
let everything pass through unaffected). Keep in mind that my code coerced
everything back to their original types prior to calling the renderer, so
it was merely the action of converting stuff into an array that did this.

The best I can figure is that there is something wrong with the C++ code
for our agg wrapper? Googling the exception message brings up various
discussions of mistakes in the argument handling of C/C++ code. I haven't a
clue, though, why this would be an issue.

Thoughts?
Ben Root
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to