docs: def save_figure(self, event=None, transparent=False, dpi=600):
          """ save figure image to file"""
          file_choices = "PNG (*.png)|*.png|SVG (*.svg)|*.svg|PDF (*.pdf)|*.pdf"
          try:
              ofile = self.conf.title.strip()
          except:
              ofile = 'Image'
          if len(ofile) > 64:
              ofile = ofile[:63].strip()
          if len(ofile) < 1:
              ofile = 'plot'
  
          for c in ' :";|/\\': # "
              ofile = ofile.replace(c, '_')
  
          ofile = ofile + '.png'
          orig_dir = os.path.abspath(os.curdir)
          dlg = wx.FileDialog(self, message='Save Plot Figure as...',
                              defaultDir = os.getcwd(),
                              defaultFile=ofile,
                              wildcard=file_choices,
                              style=wx.FD_SAVE|wx.FD_CHANGE_DIR)
  
          if dlg.ShowModal() == wx.ID_OK:
              path = dlg.GetPath()
              if hasattr(self, 'fig'):
                  self.fig.savefig(path, transparent=transparent, dpi=dpi)
              else:
                  self.canvas.print_figure(path, transparent=transparent, dpi=dpi)
              if (path.find(self.launch_dir) ==  0):
                  path = path[len(self.launch_dir)+1:]
              self.write_message('Saved plot to %s' % path)
          os.chdir(orig_dir)