def run(self):
        """the plotter thread is constantly updating the the
        pixel_area"""

        while not self._stop_request.is_set():
            # get data
            if self._lock_new_values.acquire(False):
                values = self._new_values
                self._new_values = []
                self._lock_new_values.release()  # release to receive new values
            else:
                values = []

            n = len(values)
            if n > 0:
                if n > self._plotter.width:
                    values = values[-1 * self._plotter.width:]  # only the last
                    n = len(values)
                self._plotter.pixel_array[:-1 * n, :] = \
                    self._plotter.pixel_array[n:, :]
                for x in range(-1 * n, 0):
                    self._plotter.write_values(position=x,
                                               values=values[x][0],
                                               set_marker=values[x][1])
                # Expyriment present
                lock_expyriment.acquire()
                self._plotter.present(update=False, clear=False)
                lock_expyriment.release()