def METHOD_NAME(self):
    """Refreshes ProtoPlotter and updates data in the respective
    plots.
    """
    # Dump the entire buffer into a deque. This operation is fast because
    # its just consuming data from the buffer and appending it to a deque.
    for proto_class, buffer in self.buffers.items():
        for _ in range(buffer.queue.qsize()):
            data = self.configuration[proto_class](buffer.get(block=False))
            # If named_value is new, create a plot and for the new value and
            # add it to necessary maps
            for name, value in data.items():
                if name not in self.plots:
                    self.data_x[name] = deque([], self.buffer_size)
                    self.data_y[name] = deque([], self.buffer_size)
                    self.plots[name] = self.win.plot(
                        pen=QtGui.QColor(
                            random.randint(100, 255),
                            random.randint(100, 255),
                            random.randint(100, 255),
                        ),
                        name=name,
                        disableAutoRange=True,
                        brush=None,
                    )
                    self.plots[name].setDownsampling(method="peak")
                    self.legend.addItem(self.plots[name], name)
                # Add incoming data to existing deques of data
                self.data_x[name].append(time.time() - self.time)
                self.data_y[name].append(value)
    if self.last_update_time + self.update_interval > time.time():
        return
    self.last_update_time = time.time()
    for named_value, plot in self.plots.items():
        # Update the data
        plot.setData(self.data_x[named_value], self.data_y[named_value])
    self.win.setRange(
        xRange=[
            time.time() - self.time - self.window_secs,
            time.time() - self.time,
        ],
    )