def _show(self, *args, **kwargs): """ show() and patchshow()** wrap their respective Canvas methods, so any valid arguments (like colormaps, grids etc...) should just work. In addition, multicanvas show methods have the following additional keyword arguments: Parameters ---------- names: bool (False) Show multicanvas names at top of plot colors: bool (True): Map stored color to each particle in subplot. **kwargs: Any valid splot arg (ncols, figsize etc...) or show/patchshow args, such as cmap, grid etc... If passing a pre-constructed axes/subplots to mc.show(), it must be as a keyword. As a positional, it will not work! """ names = kwargs.pop('names', False) colors = kwargs.pop('colors', True) showstyle = kwargs.pop('showstyle', 'show') if showstyle not in ['show', 'patchshow']: raise MultiError("showstyle must be show or patchshow, " "not %s" % showstyle) axes, kwargs = putil._parse_ax(*args, **kwargs) if not axes: axes, kwargs = putil.multi_axes(len(self), **kwargs) if len(axes) < len(self): logger.warn("MultiCanvas has %s canvas, but only %s axes recieved" " in show()" % (len(self), len(axes))) upperlim = len(axes) else: upperlim = len(self) pcolors = self._request_plotcolors() for idx in range(upperlim): c = self.canvii[idx] if colors: def cmap(p): p.color = pcolors[idx] return p c = c.pmap(cmap) if names: kwargs['title'] = self.names[idx] getattr(c, showstyle)(axes[idx], **kwargs) return axes
def multishow(images, *args, **kwargs): """ """ names = kwargs.pop('names', []) if not getattr(images, '__iter__'): return showim(images, *args, **kwargs) if len(images) == 1: return showim(images[0], *args, **kwargs) axes, kwargs = multi_axes(len(images), **kwargs) for idx, ax in enumerate(axes): showim(images[idx], ax, *args, **kwargs) try: ax.set_title(names[idx]) except IndexError: pass return axes