def draw(self, renderer): """ Draws the :class:`Text` object to the given *renderer*. """ if renderer is not None: self._renderer = renderer if not self.get_visible(): return if self._text=='': return bbox, info = self._get_layout(renderer) trans = self.get_transform() # don't use self.get_position here, which refers to text position # in Text, and dash position in TextWithDash: posx = float(self.convert_xunits(self._x)) posy = float(self.convert_yunits(self._y)) posx, posy = trans.transform_point((posx, posy)) canvasw, canvash = renderer.get_canvas_width_height() # draw the FancyBboxPatch if self._bbox_patch: self._draw_bbox(renderer, posx, posy) gc = renderer.new_gc() gc.set_foreground(self._color) gc.set_alpha(self._alpha) gc.set_url(self._url) if self.get_clip_on(): gc.set_clip_rectangle(self.clipbox) if self._bbox: bbox_artist(self, renderer, self._bbox) angle = self.get_rotation() if rcParams['text.usetex']: for line, wh, x, y in info: x = x + posx y = y + posy if renderer.flipy(): y = canvash-y clean_line, ismath = self.is_math_text(line) renderer.draw_tex(gc, x, y, clean_line, self._fontproperties, angle) return for line, wh, x, y in info: x = x + posx y = y + posy if renderer.flipy(): y = canvash-y clean_line, ismath = self.is_math_text(line) renderer.draw_text(gc, x, y, clean_line, self._fontproperties, angle, ismath=ismath)
def draw(self, renderer): if self._text=='': return gc = renderer.new_gc() gc.set_foreground(self._color) gc.set_alpha(self._alpha) if self.get_clip_on(): gc.set_clip_rectangle(self.clipbox.get_bounds()) if 0: bbox_artist(self, renderer) angle = self.get_angle() bbox, info = self._get_layout(renderer) for line, wh, x, y in info: x, y = self._transform.xy_tup((x, y)) #renderer.draw_arc(gc, (1,0,0), # x, y, 2, 2, 0.0, 360.0) if renderer.flipy(): canvasw, canvash = renderer.get_canvas_width_height() y = canvash-y renderer.draw_text(gc, x, y, line, self._fontproperties, angle, ismath=self.is_math_text())
def draw(self, renderer, *args, **kwargs): 'Draw the axis lines, grid lines, tick lines and labels' renderer.open_group(__name__) ticklabelBoxes = [] majorTicks = self.get_major_ticks() majorLocs = self._majorLocator() self._majorFormatter.set_locs(majorLocs) majorLabels = [self._majorFormatter(val, i) for i, val in enumerate(majorLocs)] seen = {} interval = self.get_view_interval() for tick, loc, label in zip(majorTicks, majorLocs, majorLabels): if not interval.contains(loc): continue seen[loc] = 1 tick.update_position(loc) tick.set_label1(label) tick.set_label2(label) tick.draw(renderer) extent = tick.label1.get_window_extent(renderer) ticklabelBoxes.append(extent) minorTicks = self.get_minor_ticks() minorLocs = self._minorLocator() self._minorFormatter.set_locs(minorLocs) minorLabels = [self._minorFormatter(val, i) for i, val in enumerate(minorLocs)] for tick, loc, label in zip(minorTicks, minorLocs, minorLabels): if not interval.contains(loc): continue if seen.has_key(loc): continue tick.update_position(loc) tick.set_label(label) tick.draw(renderer) extent = tick.label1.get_window_extent(renderer) ticklabelBoxes.append(extent) # find the tick labels that are close to the axis labels. I # scale up the axis label box to also find the neighbors, not # just the tick labels that actually overlap note we need a # *copy* of the axis label box because we don't wan't to scale # the actual bbox labelBox = self._label.get_window_extent(renderer) self._update_label_postion(ticklabelBoxes) self._label.draw(renderer) # memory leak here, vertical text if 0: # draw the bounding boxes around the text for debug for tick in majorTicks: label = tick.label1 bbox_artist(label, renderer) bbox_artist(self._label, renderer) renderer.close_group(__name__)
def draw(self, renderer): if not self.get_visible(): return if self._text == '': return if renderer is not None: self._renderer = renderer gc = renderer.new_gc() gc.set_foreground(self._color) gc.set_alpha(self._alpha) if self.get_clip_on(): gc.set_clip_rectangle(self.clipbox.get_bounds()) if self._bbox: bbox_artist(self, renderer, self._bbox) angle = self.get_rotation() bbox, info = self._get_layout(renderer) for line, wh, x, y in info: x, y = self._transform.xy_tup((x, y)) #renderer.draw_arc(gc, (1,0,0), # x, y, 2, 2, 0.0, 360.0) if renderer.flipy(): canvasw, canvash = renderer.get_canvas_width_height() y = canvash - y renderer.draw_text(gc, x, y, line, self._fontproperties, angle, ismath=self.is_math_text())
def draw(self, renderer): renderer.open_group('legend') self._update_positions(renderer) if self._drawFrame: self._patch.draw(renderer) for h in self._handles: h.draw(renderer) if 0: bbox_artist(h, renderer) for t in self._texts: if 0: bbox_artist(t, renderer) t.draw(renderer) renderer.close_group('legend')
def draw(self, renderer): #return if renderer is not None: self._renderer = renderer if not self.get_visible(): return if self._text == '': return gc = renderer.new_gc() gc.set_foreground(self._color) gc.set_alpha(self._alpha) if self.get_clip_on(): gc.set_clip_rectangle(self.clipbox) if self._bbox: bbox_artist(self, renderer, self._bbox) angle = self.get_rotation() bbox, info = self._get_layout(renderer) trans = self.get_transform() # don't use self.get_position here, which refers to text position # in Text, and dash position in TextWithDash: posx = float(self.convert_xunits(self._x)) posy = float(self.convert_yunits(self._y)) posx, posy = trans.transform_point((posx, posy)) canvasw, canvash = renderer.get_canvas_width_height() if rcParams['text.usetex']: for line, wh, x, y in info: x = x + posx y = y + posy if renderer.flipy(): y = canvash - y renderer.draw_tex(gc, x, y, line, self._fontproperties, angle) return for line, wh, x, y in info: x = x + posx y = y + posy if renderer.flipy(): y = canvash - y renderer.draw_text(gc, x, y, line, self._fontproperties, angle, ismath=self.is_math_text(line))
def draw(self, renderer): if not self.get_visible(): return if self._text=='': return if renderer is not None: self._renderer = renderer gc = renderer.new_gc() gc.set_foreground(self._color) gc.set_alpha(self._alpha) if self.get_clip_on(): gc.set_clip_rectangle(self.clipbox.get_bounds()) if self._bbox: bbox_artist(self, renderer, self._bbox) angle = self.get_rotation() if angle==0: m = self._rgxsuper.match(self._text) if m is not None: bbox, info = self._get_layout_super(self._renderer, m) base, xt, yt = info[0] renderer.draw_text(gc, xt, yt, base, self._fontproperties, angle, ismath=False) exponent, xt, yt, fp = info[1] renderer.draw_text(gc, xt, yt, exponent, fp, angle, ismath=False) return bbox, info = self._get_layout(renderer) for line, wh, x, y in info: x, y = self._transform.xy_tup((x, y)) #renderer.draw_arc(gc, (1,0,0), # x, y, 2, 2, 0.0, 360.0) if renderer.flipy(): canvasw, canvash = renderer.get_canvas_width_height() y = canvash-y renderer.draw_text(gc, x, y, line, self._fontproperties, angle, ismath=self.is_math_text())
def draw(self, renderer): renderer.open_group("legend") self._update_positions(renderer) if self._drawFrame: self.legendPatch.draw(renderer) for h in self.handles: if h is not None: h.draw(renderer) if 0: bbox_artist(h, renderer) for t in self.texts: if 0: bbox_artist(t, renderer) t.draw(renderer) renderer.close_group("legend")
def draw(self, renderer): # return if renderer is not None: self._renderer = renderer if not self.get_visible(): return if self._text == "": return gc = renderer.new_gc() gc.set_foreground(self._color) gc.set_alpha(self._alpha) if self.get_clip_on(): gc.set_clip_rectangle(self.clipbox) if self._bbox: bbox_artist(self, renderer, self._bbox) angle = self.get_rotation() bbox, info = self._get_layout(renderer) trans = self.get_transform() # don't use self.get_position here, which refers to text position # in Text, and dash position in TextWithDash: posx = float(self.convert_xunits(self._x)) posy = float(self.convert_yunits(self._y)) posx, posy = trans.transform_point((posx, posy)) canvasw, canvash = renderer.get_canvas_width_height() if rcParams["text.usetex"]: for line, wh, x, y in info: x = x + posx y = y + posy if renderer.flipy(): y = canvash - y renderer.draw_tex(gc, x, y, line, self._fontproperties, angle) return for line, wh, x, y in info: x = x + posx y = y + posy if renderer.flipy(): y = canvash - y renderer.draw_text(gc, x, y, line, self._fontproperties, angle, ismath=self.is_math_text(line))
def draw(self, renderer): #return if renderer is not None: self._renderer = renderer if not self.get_visible(): return if self._text=='': return gc = renderer.new_gc() gc.set_foreground(self._color) gc.set_alpha(self._alpha) if self.get_clip_on(): gc.set_clip_rectangle(self.clipbox) if self._bbox: bbox_artist(self, renderer, self._bbox) angle = self.get_rotation() bbox, info = self._get_layout(renderer) trans = self.get_transform() posx, posy = self.get_position() posx, posy = trans.transform_point((posx, posy)) canvasw, canvash = renderer.get_canvas_width_height() if rcParams['text.usetex']: for line, wh, x, y in info: x = x + posx y = y + posy if renderer.flipy(): y = canvash-y renderer.draw_tex(gc, x, y, line, self._fontproperties, angle) return for line, wh, x, y in info: x = x + posx y = y + posy if renderer.flipy(): y = canvash-y renderer.draw_text(gc, x, y, line, self._fontproperties, angle, ismath=self.is_math_text(line))
def draw(self, renderer): if not self.get_visible(): return renderer.open_group('legend') self._update_positions(renderer) if self._drawFrame: if self.shadow: shadow = Shadow(self.legendPatch, -0.005, -0.005) shadow.draw(renderer) self.legendPatch.draw(renderer) for h in self.handles: if h is not None: h.draw(renderer) if 0: bbox_artist(h, renderer) for t in self.texts: if 0: bbox_artist(t, renderer) t.draw(renderer) renderer.close_group('legend')
def draw(self, renderer): #return if renderer is not None: self._renderer = renderer if not self.get_visible(): return if self._text == '': return gc = renderer.new_gc() gc.set_foreground(self._color) gc.set_alpha(self._alpha) if self.get_clip_on(): gc.set_clip_rectangle(self.clipbox.get_bounds()) if self._bbox: bbox_artist(self, renderer, self._bbox) angle = self.get_rotation() bbox, info = self._get_layout(renderer) trans = self.get_transform() if rcParams['text.usetex']: canvasw, canvash = renderer.get_canvas_width_height() for line, wh, x, y in info: x, y = trans.xy_tup((x, y)) if renderer.flipy(): y = canvash - y renderer.draw_tex(gc, x, y, line, self._fontproperties, angle) return for line, wh, x, y in info: x, y = trans.xy_tup((x, y)) if renderer.flipy(): canvasw, canvash = renderer.get_canvas_width_height() y = canvash - y renderer.draw_text(gc, x, y, line, self._fontproperties, angle, ismath=self.is_math_text(line))
def draw(self, renderer): if not self.get_visible(): return if self._text=='': return if renderer is not None: self._renderer = renderer gc = renderer.new_gc() gc.set_foreground(self._color) gc.set_alpha(self._alpha) if self.get_clip_on(): gc.set_clip_rectangle(self.clipbox.get_bounds()) if self._bbox: bbox_artist(self, renderer, self._bbox) angle = self.get_rotation() if angle==0: m = self._rgxsuper.match(self._text) if m is not None: bbox, info = self._get_layout_super(self._renderer, m) base, xt, yt = info[0] renderer.draw_text(gc, xt, yt, base, self._fontproperties, angle, ismath=False) exponent, xt, yt, fp = info[1] renderer.draw_text(gc, xt, yt, exponent, fp, angle, ismath=False) return if len(self._substrings)>1: print 'substrs', self._substrings # embedded mathtext thisx, thisy = self._transform.xy_tup((self._x, self._y)) for s,ismath in self._substrings: w, h = renderer.get_text_width_height( s, self._fontproperties, ismath) renderx, rendery = thisx, thisy if renderer.flipy(): canvasw, canvash = renderer.get_canvas_width_height() rendery = canvash-rendery renderer.draw_text(gc, renderx, rendery, s, self._fontproperties, angle, ismath) thisx += w return bbox, info = self._get_layout(renderer) for line, wh, x, y in info: x, y = self._transform.xy_tup((x, y)) #renderer.draw_arc(gc, (1,0,0), # x, y, 2, 2, 0.0, 360.0) if renderer.flipy(): canvasw, canvash = renderer.get_canvas_width_height() y = canvash-y renderer.draw_text(gc, x, y, line, self._fontproperties, angle, ismath=self.is_math_text())
def draw(self, renderer, *args, **kwargs): 'Draw the axis lines, grid lines, tick lines and labels' if not self.get_visible(): return renderer.open_group(__name__) ticklabelBoxes = [] ticklabelBoxes2 = [] majorTicks = self.get_major_ticks() majorLocs = self.major.locator() self.major.formatter.set_locs(majorLocs) majorLabels = [ self.major.formatter(val, i) for i, val in enumerate(majorLocs) ] seen = {} interval = self.get_view_interval() for tick, loc, label in zip(majorTicks, majorLocs, majorLabels): if tick is None: continue if not interval.contains(loc): continue seen[loc] = 1 tick.update_position(loc) tick.set_label1(label) tick.set_label2(label) tick.draw(renderer) if tick.label1On: extent = tick.label1.get_window_extent(renderer) ticklabelBoxes.append(extent) if tick.label2On: extent = tick.label2.get_window_extent(renderer) ticklabelBoxes2.append(extent) minorTicks = self.get_minor_ticks() minorLocs = self.minor.locator() self.minor.formatter.set_locs(minorLocs) minorLabels = [ self.minor.formatter(val, i) for i, val in enumerate(minorLocs) ] for tick, loc, label in zip(minorTicks, minorLocs, minorLabels): if tick is None: continue if not interval.contains(loc): continue if seen.has_key(loc): continue tick.update_position(loc) tick.set_label1(label) tick.set_label2(label) tick.draw(renderer) if tick.label1On: extent = tick.label1.get_window_extent(renderer) ticklabelBoxes.append(extent) if tick.label2On: extent = tick.label2.get_window_extent(renderer) ticklabelBoxes2.append(extent) # scale up the axis label box to also find the neighbors, not # just the tick labels that actually overlap note we need a # *copy* of the axis label box because we don't wan't to scale # the actual bbox self._update_label_position(ticklabelBoxes, ticklabelBoxes2) self.label.draw(renderer) self._update_offset_text_position(ticklabelBoxes, ticklabelBoxes2) self.offsetText.set_text(self.major.formatter.get_offset()) self.offsetText.draw(renderer) if 0: # draw the bounding boxes around the text for debug for tick in majorTicks: label = tick.label1 bbox_artist(label, renderer) bbox_artist(self.label, renderer) renderer.close_group(__name__)
def draw(self, renderer): if renderer is not None: self._renderer = renderer if not self.get_visible(): return if self._text=='': return gc = renderer.new_gc() gc.set_foreground(self._color) gc.set_alpha(self._alpha) if self.get_clip_on(): gc.set_clip_rectangle(self.clipbox.get_bounds()) if self._bbox: bbox_artist(self, renderer, self._bbox) angle = self.get_rotation() ismath = self.is_math_text() if angle==0: if ismath!='TeX': m = None else: m = self._rgxsuper.match(self._text) if m is not None and not rcParams['text.usetex']: bbox, info = self._get_layout_super(self._renderer, m) base, xt, yt = info[0] renderer.draw_text(gc, xt, yt, base, self._fontproperties, angle, ismath=False) exponent, xt, yt, fp = info[1] renderer.draw_text(gc, xt, yt, exponent, fp, angle, ismath=False) return if len(self._substrings)>1: # embedded mathtext thisx, thisy = self._transform.xy_tup((self._x, self._y)) for s,ismath in self._substrings: w, h = renderer.get_text_width_height( s, self._fontproperties, ismath) renderx, rendery = thisx, thisy if renderer.flipy(): canvasw, canvash = renderer.get_canvas_width_height() rendery = canvash-rendery renderer.draw_text(gc, renderx, rendery, s, self._fontproperties, angle, ismath) thisx += w return bbox, info = self._get_layout(renderer) if ismath=='TeX': canvasw, canvash = renderer.get_canvas_width_height() for line, wh, x, y in info: x, y = self._transform.xy_tup((x, y)) if renderer.flipy(): y = canvash-y renderer.draw_tex(gc, x, y, line, self._fontproperties, angle) return for line, wh, x, y in info: x, y = self._transform.xy_tup((x, y)) #renderer.draw_arc(gc, (1,0,0), # x, y, 2, 2, 0.0, 360.0) if renderer.flipy(): canvasw, canvash = renderer.get_canvas_width_height() y = canvash-y renderer.draw_text(gc, x, y, line, self._fontproperties, angle, ismath=self.is_math_text())
def draw(self, renderer, *args, **kwargs): 'Draw the axis lines, grid lines, tick lines and labels' if not self.get_visible(): return renderer.open_group(__name__) ticklabelBoxes = [] ticklabelBoxes2 = [] majorTicks = self.get_major_ticks() majorLocs = self.major.locator() self.major.formatter.set_locs(majorLocs) majorLabels = [self.major.formatter(val, i) for i, val in enumerate(majorLocs)] seen = {} interval = self.get_view_interval() for tick, loc, label in zip(majorTicks, majorLocs, majorLabels): if tick is None: continue if not interval.contains(loc): continue seen[loc] = 1 tick.update_position(loc) tick.set_label1(label) tick.set_label2(label) tick.draw(renderer) if tick.label1On: extent = tick.label1.get_window_extent(renderer) ticklabelBoxes.append(extent) if tick.label2On: extent = tick.label2.get_window_extent(renderer) ticklabelBoxes2.append(extent) minorTicks = self.get_minor_ticks() minorLocs = self.minor.locator() self.minor.formatter.set_locs(minorLocs) minorLabels = [self.minor.formatter(val, i) for i, val in enumerate(minorLocs)] for tick, loc, label in zip(minorTicks, minorLocs, minorLabels): if tick is None: continue if not interval.contains(loc): continue if seen.has_key(loc): continue tick.update_position(loc) tick.set_label1(label) tick.set_label2(label) tick.draw(renderer) if tick.label1On: extent = tick.label1.get_window_extent(renderer) ticklabelBoxes.append(extent) if tick.label2On: extent = tick.label2.get_window_extent(renderer) ticklabelBoxes2.append(extent) # scale up the axis label box to also find the neighbors, not # just the tick labels that actually overlap note we need a # *copy* of the axis label box because we don't wan't to scale # the actual bbox self._update_label_position(ticklabelBoxes, ticklabelBoxes2) self.label.draw(renderer) self._update_offset_text_position(ticklabelBoxes, ticklabelBoxes2) self.offsetText.set_text( self.major.formatter.get_offset() ) self.offsetText.draw(renderer) if 0: # draw the bounding boxes around the text for debug for tick in majorTicks: label = tick.label1 bbox_artist(label, renderer) bbox_artist(self.label, renderer) renderer.close_group(__name__)