code: def add_viz(self, data, node_xml):
      # add viz element for node
      viz = {}
      color = node_xml.find(f"{{{self.NS_VIZ}}}color")
      if color is not None:
          if self.VERSION == "1.1":
              viz["color"] = {
                  "r": int(color.get("r")),
                  "g": int(color.get("g")),
                  "b": int(color.get("b")),
              }
          else:
              viz["color"] = {
                  "r": int(color.get("r")),
                  "g": int(color.get("g")),
                  "b": int(color.get("b")),
                  "a": float(color.get("a", 1)),
              }
  
      size = node_xml.find(f"{{{self.NS_VIZ}}}size")
      if size is not None:
          viz["size"] = float(size.get("value"))
  
      thickness = node_xml.find(f"{{{self.NS_VIZ}}}thickness")
      if thickness is not None:
          viz["thickness"] = float(thickness.get("value"))
  
      shape = node_xml.find(f"{{{self.NS_VIZ}}}shape")
      if shape is not None:
          viz["shape"] = shape.get("shape")
          if viz["shape"] == "image":
              viz["shape"] = shape.get("uri")
  
      position = node_xml.find(f"{{{self.NS_VIZ}}}position")
      if position is not None:
          viz["position"] = {
              "x": float(position.get("x", 0)),
              "y": float(position.get("y", 0)),
              "z": float(position.get("z", 0)),
          }
  
      if len(viz) > 0:
          data["viz"] = viz
      return data
  
imports: import itertools
  import time
  from xml.etree.ElementTree import Element, ElementTree, SubElement, register_namespace, tostring
  import networkx
  from networkx.utils import open_file
label_desc: Use image node_id 6 for calling the GEXFReader obj's underlying member method code with example usage: obj.add_viz(data, node_xml) and returns: data