<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def update(self, fmt={}, replot=False, auto_update=False, draw=None, force=False, todefault=False, **kwargs):
 """ Update the formatoptions and the plot If the :attr:`data` attribute of this plotter is None, the plotter is updated like a usual dictionary (see :meth:`dict.update`). Otherwise the update is registered and the plot is updated if `auto_update` is True or if the :meth:`start_update` method is called (see below). Parameters %(Plotter._register_update.parameters)s %(InteractiveBase.start_update.parameters)s %(InteractiveBase.update.parameters.auto_update)s ``**kwargs`` Any other formatoption that shall be updated (additionally to those in `fmt`) Notes ----- %(InteractiveBase.update.notes)s"""

        if self.disabled:
            return
        fmt = dict(fmt)
        if kwargs:
            fmt.update(kwargs)
        # if the data is None, update like a usual dictionary (but with
        # validation)
        if not self._initialized:
            for key, val in six.iteritems(fmt):
                self[key] = val
            return

        self._register_update(fmt=fmt, replot=replot, force=force,
                              todefault=todefault)
        if not self.no_auto_update or auto_update:
            self.start_update(draw=draw)