Hello all,

I need to draw different hatch styles on the different groups of a stacked bar 
chart in order to make a figure that works properly in black and white. The 
devil is, I can't figure out how to do it. When I pass the hatch option a list 
of values, I get an error.

A simple example:
from numpy import *
import matplotlib.pyplot as plt

plt.hist( [ linspace(1, 10, 20), linspace(1, 10, 40)], bins=range(10), 
histtype="barstacked", rwidth=1.0, label=["a", "b"], 
        color=["red", "green"], hatch=["/", "x"] )
plt.show()

The resulting errors/outputs are at the end of the email.

Thanks in advance for any help,
Sean Lake

In [4]: plt.hist( [ linspace(1, 10, 20), linspace(1, 10, 40)], bins=range(10), 
histtype
="barstacked", rwidth=1.0, label=["a", "b"], 
   ...:         color=["red", "green"], hatch=["/", "x"] )
Out[4]: 
([array([0, 3, 2, 2, 2, 2, 2, 2, 2]), array([0, 5, 4, 4, 5, 4, 4, 5, 4])],
 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
 <a list of 2 Lists of Patches objects>)

In [5]: plt.show()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

/sw/lib/python2.6/site-packages/matplotlib/backends/backend_gtk.pyc in 
expose_event(self, widget, event)
    391                 x, y, w, h = self.allocation
    392                 self._pixmap_prepare (w, h)
--> 393                 self._render_figure(self._pixmap, w, h)
    394                 self._need_redraw = False
    395 

/sw/lib/python2.6/site-packages/matplotlib/backends/backend_gtkagg.pyc in 
_render_figure(self, pixmap, width, height)
     73     def _render_figure(self, pixmap, width, height):
     74         if DEBUG: print 'FigureCanvasGTKAgg.render_figure'
---> 75         FigureCanvasAgg.draw(self)
     76         if DEBUG: print 'FigureCanvasGTKAgg.render_figure pixmap', 
pixmap
     77         #agg_to_gtk_drawable(pixmap, self.renderer._renderer, None)


/sw/lib/python2.6/site-packages/matplotlib/backends/backend_agg.pyc in 
draw(self)
    392 
    393         self.renderer = self.get_renderer()
--> 394         self.figure.draw(self.renderer)
    395 
    396     def get_renderer(self):

/sw/lib/python2.6/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, 
renderer, *args, **kwargs)
     53     def draw_wrapper(artist, renderer, *args, **kwargs):
     54         before(artist, renderer)
---> 55         draw(artist, renderer, *args, **kwargs)
     56         after(artist, renderer)
     57 

/sw/lib/python2.6/site-packages/matplotlib/figure.pyc in draw(self, renderer)
    796         dsu.sort(key=itemgetter(0))
    797         for zorder, func, args in dsu:
--> 798             func(*args)
    799 
    800         renderer.close_group('figure')

/sw/lib/python2.6/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, 
renderer, *args, **kwargs)
     53     def draw_wrapper(artist, renderer, *args, **kwargs):
     54         before(artist, renderer)
---> 55         draw(artist, renderer, *args, **kwargs)
     56         after(artist, renderer)
     57 

/sw/lib/python2.6/site-packages/matplotlib/axes.pyc in draw(self, renderer, 
inframe)
   1932 
   1933         for zorder, a in dsu:
-> 1934             a.draw(renderer)
   1935 
   1936         renderer.close_group('axes')

/sw/lib/python2.6/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, 
renderer, *args, **kwargs)
     53     def draw_wrapper(artist, renderer, *args, **kwargs):
     54         before(artist, renderer)
---> 55         draw(artist, renderer, *args, **kwargs)
     56         after(artist, renderer)
     57 

/sw/lib/python2.6/site-packages/matplotlib/patches.pyc in draw(self, renderer)
    381                 path_effect.draw_path(renderer, gc, tpath, affine, 
rgbFace)
    382         else:
--> 383             renderer.draw_path(gc, tpath, affine, rgbFace)
    384 
    385         gc.restore()

/sw/lib/python2.6/site-packages/matplotlib/backends/backend_agg.pyc in 
draw_path(self, gc, path, transform, rgbFace)
    115                 self._renderer.draw_path(gc, p, transform, rgbFace)
    116         else:
--> 117             self._renderer.draw_path(gc, path, transform, rgbFace)
    118 
    119     def draw_mathtext(self, gc, x, y, s, prop, angle):

/sw/lib/python2.6/site-packages/matplotlib/backend_bases.pyc in 
get_hatch_path(self, density)
    865         if self._hatch is None:
    866             return None
--> 867         return Path.hatch(self._hatch, density)
    868 
    869 

/sw/lib/python2.6/site-packages/matplotlib/path.pyc in hatch(cls, hatchpattern, 
density)
    662             return None
    663 
--> 664         hatch_path = cls._hatch_dict.get((hatchpattern, density))
    665         if hatch_path is not None:
    666             return hatch_path

TypeError: unhashable type: 'list'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

/sw/lib/python2.6/site-packages/matplotlib/backends/backend_gtk.pyc in 
expose_event(self, widget, event)
    391                 x, y, w, h = self.allocation
    392                 self._pixmap_prepare (w, h)
--> 393                 self._render_figure(self._pixmap, w, h)
    394                 self._need_redraw = False
    395 

/sw/lib/python2.6/site-packages/matplotlib/backends/backend_gtkagg.pyc in 
_render_figure(self, pixmap, width, height)
     73     def _render_figure(self, pixmap, width, height):
     74         if DEBUG: print 'FigureCanvasGTKAgg.render_figure'
---> 75         FigureCanvasAgg.draw(self)
     76         if DEBUG: print 'FigureCanvasGTKAgg.render_figure pixmap', 
pixmap
     77         #agg_to_gtk_drawable(pixmap, self.renderer._renderer, None)


/sw/lib/python2.6/site-packages/matplotlib/backends/backend_agg.pyc in 
draw(self)
    392 
    393         self.renderer = self.get_renderer()
--> 394         self.figure.draw(self.renderer)
    395 
    396     def get_renderer(self):

/sw/lib/python2.6/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, 
renderer, *args, **kwargs)
     53     def draw_wrapper(artist, renderer, *args, **kwargs):
     54         before(artist, renderer)
---> 55         draw(artist, renderer, *args, **kwargs)
     56         after(artist, renderer)
     57 

/sw/lib/python2.6/site-packages/matplotlib/figure.pyc in draw(self, renderer)
    796         dsu.sort(key=itemgetter(0))
    797         for zorder, func, args in dsu:
--> 798             func(*args)
    799 
    800         renderer.close_group('figure')

/sw/lib/python2.6/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, 
renderer, *args, **kwargs)
     53     def draw_wrapper(artist, renderer, *args, **kwargs):
     54         before(artist, renderer)
---> 55         draw(artist, renderer, *args, **kwargs)
     56         after(artist, renderer)
     57 

/sw/lib/python2.6/site-packages/matplotlib/axes.pyc in draw(self, renderer, 
inframe)
   1932 
   1933         for zorder, a in dsu:
-> 1934             a.draw(renderer)
   1935 
   1936         renderer.close_group('axes')

/sw/lib/python2.6/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, 
renderer, *args, **kwargs)
     53     def draw_wrapper(artist, renderer, *args, **kwargs):
     54         before(artist, renderer)
---> 55         draw(artist, renderer, *args, **kwargs)
     56         after(artist, renderer)
     57 

/sw/lib/python2.6/site-packages/matplotlib/patches.pyc in draw(self, renderer)
    381                 path_effect.draw_path(renderer, gc, tpath, affine, 
rgbFace)
    382         else:
--> 383             renderer.draw_path(gc, tpath, affine, rgbFace)
    384 
    385         gc.restore()

/sw/lib/python2.6/site-packages/matplotlib/backends/backend_agg.pyc in 
draw_path(self, gc, path, transform, rgbFace)
    115                 self._renderer.draw_path(gc, p, transform, rgbFace)
    116         else:
--> 117             self._renderer.draw_path(gc, path, transform, rgbFace)
    118 
    119     def draw_mathtext(self, gc, x, y, s, prop, angle):

/sw/lib/python2.6/site-packages/matplotlib/backend_bases.pyc in 
get_hatch_path(self, density)
    865         if self._hatch is None:
    866             return None
--> 867         return Path.hatch(self._hatch, density)
    868 
    869 

/sw/lib/python2.6/site-packages/matplotlib/path.pyc in hatch(cls, hatchpattern, 
density)
    662             return None
    663 
--> 664         hatch_path = cls._hatch_dict.get((hatchpattern, density))
    665         if hatch_path is not None:
    666             return hatch_path

TypeError: unhashable type: 'list'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

/sw/lib/python2.6/site-packages/matplotlib/backends/backend_gtk.pyc in 
expose_event(self, widget, event)
    391                 x, y, w, h = self.allocation
    392                 self._pixmap_prepare (w, h)
--> 393                 self._render_figure(self._pixmap, w, h)
    394                 self._need_redraw = False
    395 

/sw/lib/python2.6/site-packages/matplotlib/backends/backend_gtkagg.pyc in 
_render_figure(self, pixmap, width, height)
     73     def _render_figure(self, pixmap, width, height):
     74         if DEBUG: print 'FigureCanvasGTKAgg.render_figure'
---> 75         FigureCanvasAgg.draw(self)
     76         if DEBUG: print 'FigureCanvasGTKAgg.render_figure pixmap', 
pixmap
     77         #agg_to_gtk_drawable(pixmap, self.renderer._renderer, None)


/sw/lib/python2.6/site-packages/matplotlib/backends/backend_agg.pyc in 
draw(self)
    392 
    393         self.renderer = self.get_renderer()
--> 394         self.figure.draw(self.renderer)
    395 
    396     def get_renderer(self):

/sw/lib/python2.6/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, 
renderer, *args, **kwargs)
     53     def draw_wrapper(artist, renderer, *args, **kwargs):
     54         before(artist, renderer)
---> 55         draw(artist, renderer, *args, **kwargs)
     56         after(artist, renderer)
     57 

/sw/lib/python2.6/site-packages/matplotlib/figure.pyc in draw(self, renderer)
    796         dsu.sort(key=itemgetter(0))
    797         for zorder, func, args in dsu:
--> 798             func(*args)
    799 
    800         renderer.close_group('figure')

/sw/lib/python2.6/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, 
renderer, *args, **kwargs)
     53     def draw_wrapper(artist, renderer, *args, **kwargs):
     54         before(artist, renderer)
---> 55         draw(artist, renderer, *args, **kwargs)
     56         after(artist, renderer)
     57 

/sw/lib/python2.6/site-packages/matplotlib/axes.pyc in draw(self, renderer, 
inframe)
   1932 
   1933         for zorder, a in dsu:
-> 1934             a.draw(renderer)
   1935 
   1936         renderer.close_group('axes')

/sw/lib/python2.6/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, 
renderer, *args, **kwargs)
     53     def draw_wrapper(artist, renderer, *args, **kwargs):
     54         before(artist, renderer)
---> 55         draw(artist, renderer, *args, **kwargs)
     56         after(artist, renderer)
     57 

/sw/lib/python2.6/site-packages/matplotlib/patches.pyc in draw(self, renderer)
    381                 path_effect.draw_path(renderer, gc, tpath, affine, 
rgbFace)
    382         else:
--> 383             renderer.draw_path(gc, tpath, affine, rgbFace)
    384 
    385         gc.restore()

/sw/lib/python2.6/site-packages/matplotlib/backends/backend_agg.pyc in 
draw_path(self, gc, path, transform, rgbFace)
    115                 self._renderer.draw_path(gc, p, transform, rgbFace)
    116         else:
--> 117             self._renderer.draw_path(gc, path, transform, rgbFace)
    118 
    119     def draw_mathtext(self, gc, x, y, s, prop, angle):

/sw/lib/python2.6/site-packages/matplotlib/backend_bases.pyc in 
get_hatch_path(self, density)
    865         if self._hatch is None:
    866             return None
--> 867         return Path.hatch(self._hatch, density)
    868 
    869 

/sw/lib/python2.6/site-packages/matplotlib/path.pyc in hatch(cls, hatchpattern, 
density)
    662             return None
    663 
--> 664         hatch_path = cls._hatch_dict.get((hatchpattern, density))
    665         if hatch_path is not None:
    666             return hatch_path

TypeError: unhashable type: 'list'


------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software 
be a part of the solution? Download the Intel(R) Manageability Checker 
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to