class_docstr: This is the matplotlib based GUI for a single analysis
  It assumes the analysis is simple image data (this could be abstracted)
class_docstr_tok: ["This","is","the","matplotlib","based","GUI","for","a","single","analysis","It","assumes","the","analysis","is","simple","image","data","(","this","could","be","abstracted",")"]
docstr: Force complete canvas redraw
docstr_tok: ["Force","complete","canvas","redraw"]
code: def force_refresh(self):
      """Force complete canvas redraw"""
      if not self.facecolors is None and not self.scatter is None:
          self.scatter.set_facecolors(self.facecolors)
      fig_size = self.fig.get_size_inches()
      self.fig.set_size_inches(fig_size)
      self.fig.canvas.draw()
      if self.active_selector:
          self.active_selector.update()
  
imports: import io
  from enum import Enum
  import numpy
  import matplotlib.pyplot
  import matplotlib.style
  from matplotlib.widgets import RectangleSelector, LassoSelector, EllipseSelector, PolygonSelector
  from matplotlib.path import Path
  from matplotlib.backends.backend_qt5agg import FigureCanvas
  from matplotlib.figure import Figure
  from PyQt5 import QtWidgets, QtCore
  from cursors import DrawingCursors, DrawingShape, DrawingMode
label_desc: Use image node_id 7 for calling the EmbeddingGui obj's underlying member method code with example usage: obj.force_refresh() without return types