Source code for glue.viewers.matplotlib.layer_artist

import matplotlib.patches as mpatches


from glue.viewers.matplotlib.state import DeferredDrawCallbackProperty
from glue.core.message import ComputationStartedMessage, ComputationEndedMessage
from glue.viewers.common.layer_artist import LayerArtist

__all__ = ['MatplotlibLayerArtist']


[docs]class MatplotlibLayerArtist(LayerArtist): zorder = DeferredDrawCallbackProperty() visible = DeferredDrawCallbackProperty() def __init__(self, axes, viewer_state, layer_state=None, layer=None): super(MatplotlibLayerArtist, self).__init__(viewer_state, layer_state=layer_state, layer=layer) self.axes = axes self.mpl_artists = []
[docs] def notify_start_computation(self): """ Broadcast a message to indicate that this layer artist has started a computation (typically used in conjunction with asynchronous operations). """ if self.state.layer is not None and self.state.layer.hub is not None: self.state.layer.hub.broadcast(ComputationStartedMessage(self))
[docs] def notify_end_computation(self): """ Broadcast a message to indicate that this layer artist has ended a computation (typically used in conjunction with asynchronous operations). """ if self.state.layer is not None and self.state.layer.hub is not None: self.state.layer.hub.broadcast(ComputationEndedMessage(self))
[docs] def clear(self): for artist in self.mpl_artists: try: artist.set_visible(False) except AttributeError: # can happen for e.g. errorbars pass
[docs] def remove(self): for artist in self.mpl_artists: try: artist.remove() except ValueError: # already removed pass except TypeError: # can happen for e.g. errorbars pass except AttributeError: # can happen for Matplotlib 1.4 pass self.mpl_artists[:] = [] self._notify_start = None
[docs] def get_layer_color(self): return self.state.color
[docs] def get_handle_legend(self): # The default legend handle for matplotlib viewer if self.enabled and self.state.visible: handle = mpatches.Patch(color=self.get_layer_color(), alpha=self.layer.style.alpha) return handle, self.layer.label, None else: return None, None, None
[docs] def redraw(self): self.axes.figure.canvas.draw_idle()