docs: def draw_legend(self, show=None, auto_location=True, delay_draw=False):
          "redraw the legend"
          if show is not None:
              self.show_legend = show
  
          axes = self.canvas.figure.get_axes()
          # clear existing legend
          try:
              lgn = self.mpl_legend
              if lgn:
                  for i in lgn.get_texts():
                      i.set_text('')
                  for i in lgn.get_lines():
                      i.set_linewidth(0)
                      i.set_markersize(0)
                      i.set_marker('None')
                  lgn.draw_frame(False)
                  lgn.set_visible(False)
          except:
              pass
  
          labs = []
          lins = []
          for ax in axes:
              for xline in ax.get_lines():
                  xlab = xline.get_label()
                  if (xlab != '_nolegend_' and len(xlab)>0):
                      lins.append(xline)
  
          for l in lins:
              xl = l.get_label()
              if not self.show_legend: xl = ''
              labs.append(xl)
          labs = tuple(labs)
  
          lgn = axes[0].legend
          if self.legend_onaxis.startswith('off'):
              lgn = self.canvas.figure.legend
              # 'best' and 'off axis' not implemented yet
              if self.legend_loc == 'best':
                  self.legend_loc = 'upper right'
  
          if self.show_legend:
              self.mpl_legend = lgn(lins, labs, prop=self.legendfont,
                                    loc=self.legend_loc)
              self.mpl_legend.draw_frame(self.show_legend_frame)
              if matplotlib.__version__ < '2.0':
                  facecol = axes[0].get_axis_bgcolor()
              else:
                  facecol = axes[0].get_facecolor()
  
              self.mpl_legend.legendPatch.set_facecolor(facecol)
              if self.draggable_legend:
                  self.mpl_legend.draggable(True, update='loc')
              self.legend_map = {}
              for legline, legtext, mainline in zip(self.mpl_legend.get_lines(),
                                                    self.mpl_legend.get_texts(),
                                                    lins):
                  legline.set_picker(5)
                  legtext.set_picker(5)
                  self.legend_map[legline] = (mainline, legline, legtext)
                  self.legend_map[legtext] = (mainline, legline, legtext)
                  legtext.set_color(self.textcolor)
  
  
          self.set_added_text_size()
          if not delay_draw:
              self.canvas.draw()