code: def subscribe(
      self,
      stream: Stream,
      title=None,
      clear_after_end=False,
      clear_after_each=False,
      show: bool = False,
      history_len=1,
      dim_history=True,
      opacity=None,
      **stream_vis_args,
  ):
      # in this ovedrride we don't call base class method
      with self.lock:
          self.layout_dirty = True
  
          stream_vis = StreamVisInfo(
              stream,
              title,
              clear_after_end,
              clear_after_each,
              history_len,
              dim_history,
              opacity,
              len(self._stream_vises),
              stream_vis_args,
              0,
          )
          stream_vis._clear_pending = False
          stream_vis._pending_items = queue.Queue()
          self._stream_vises[stream.stream_name] = stream_vis
  
          self._post_add_subscription(stream_vis, **stream_vis_args)
  
          super(VisBase, self).subscribe(stream)
  
          if show or (show is None and not self.is_shown):
              return self.show()
  
imports: import sys, time, threading, queue, functools
  from typing import Any
  from types import MethodType
  from abc import ABCMeta, abstractmethod
  from .lv_types import StreamVisInfo, StreamItem
  from .None import utils
  from .stream import Stream
label_desc: Use image node_id 2 for calling the VisBase obj's underlying member method code with example usage: obj.subscribe(stream, title, clear_after_end, clear_after_each, show, history_len, dim_history, opacity) and returns: self