code: def attrs_for_node(term, **overrides):
      attrs = {
          "shape": "box",
          "colorscheme": "pastel19",
          "style": "filled",
          "label": fmt(term),
      }
      if isinstance(term, BoundColumn):
          attrs["fillcolor"] = "1"
      if isinstance(term, Factor):
          attrs["fillcolor"] = "2"
      elif isinstance(term, Filter):
          attrs["fillcolor"] = "3"
      elif isinstance(term, Classifier):
          attrs["fillcolor"] = "4"
  
      attrs.update(**overrides or {})
      return attrs
  
imports: from __future__ import unicode_literals
  from contextlib import contextmanager
  import errno
  from functools import partial
  from io import BytesIO
  from subprocess import Popen, PIPE
  from networkx import topological_sort
  from six import iteritems
  from catalyst.pipeline.data import BoundColumn
  from catalyst.pipeline import Filter, Factor, Classifier, Term
  from catalyst.pipeline.term import AssetExists
label_desc: Use image node_id 16 for calling a global function with example usage: attrs_for_node(term) and returns: attrs