class_docstr: Base class for maps
docstr: Insert a map in the chart and apply data on it
code: def _plot(self):
      """Insert a map in the chart and apply data on it"""
      map = etree.fromstring(self.svg_map)
      map.set("width", str(self.view.width))
      map.set("height", str(self.view.height))
  
      for i, serie in enumerate(self.series):
          safe_vals = list(
              filter(lambda x: x is not None, cut(serie.values, 1))
          )
          if not safe_vals:
              continue
          min_ = min(safe_vals)
          max_ = max(safe_vals)
          for j, (area_code, value) in self.enumerate_values(serie):
              area_code = self.adapt_code(area_code)
              if value is None:
                  continue
              if max_ == min_:
                  ratio = 1
              else:
                  ratio = 0.3 + 0.7 * (value - min_) / (max_ - min_)
  
              areae = map.findall(
                  ".//*[@class='%s%s %s map-element']"
                  % (self.area_prefix, area_code, self.kind)
              )
  
              if not areae:
                  continue
  
              for area in areae:
                  cls = area.get("class", "").split(" ")
                  cls.append("color-%d" % i)
                  cls.append("serie-%d" % i)
                  cls.append("series")
                  area.set("class", " ".join(cls))
                  area.set("style", "fill-opacity: %f" % ratio)
  
                  metadata = serie.metadata.get(j)
  
                  if metadata:
                      node = decorate(self.svg, area, metadata)
                      if node != area:
                          area.remove(node)
                          for g in map:
                              if area not in g:
                                  continue
                              index = list(g).index(area)
                              g.remove(area)
                              node.append(area)
                              g.insert(index, node)
  
                  for node in area:
                      cls = node.get("class", "").split(" ")
                      cls.append("reactive")
                      cls.append("tooltip-trigger")
                      cls.append("map-area")
                      node.set("class", " ".join(cls))
                      alter(node, metadata)
  
                  val = self._format(serie, j)
                  self._tooltip_data(area, val, 0, 0, "auto")
  
      self.nodes["plot"].append(map)
  
file_path: pygal/pygal/graph/map.py
imports: from pygal.etree import etree
  from pygal.graph.graph import Graph
  from pygal.util import alter, cached_property, cut, decorate
label_desc: Use image node_id 5 for calling the BaseMap obj's underlying member method code with example usage: obj._plot() without return types