'Draw any edges that have not been drawn.  This is typically
called when a after modifies the canvas that a CanvasView is
displaying.  ``update`` will cause any edges that have been
added to the chart to be drawn.
If update is given a ``chart`` argument, then it will replace
the current chart with the given chart.'

def update(self, chart=None):

    if (chart is not None):
        self._chart = chart
        self._edgelevels = []
        self._marks = {}
        self._analyze()
        self._grow()
        self.draw()
        self.erase_tree()
        self._resize()
    else:
        for edge in self._chart:
            if (edge not in self._edgetags):
                self._add_edge(edge)
        self._resize()
