class_docstr: Dot graph class
class_docstr_tok: ["Dot","graph","class"]
docstr: Draw a dot line
docstr_tok: ["Draw","a","dot","line"]
code: def dot(self, serie, r_max):
      """Draw a dot line"""
      serie_node = self.svg.serie(serie)
      view_values = list(map(self.view, serie.points))
      for i, value in safe_enumerate(serie.values):
          x, y = view_values[i]
  
          if self.logarithmic:
              log10min = log10(self._min) - 1
              log10max = log10(self._max or 1)
  
              if value != 0:
                  size = r_max * (
                      (log10(abs(value)) - log10min)
                      / (log10max - log10min)
                  )
              else:
                  size = 0
          else:
              size = r_max * (abs(value) / (self._max or 1))
  
          metadata = serie.metadata.get(i)
          dots = decorate(
              self.svg,
              self.svg.node(serie_node["plot"], class_="dots"),
              metadata,
          )
          alter(
              self.svg.node(
                  dots,
                  "circle",
                  cx=x,
                  cy=y,
                  r=size,
                  class_="dot reactive tooltip-trigger"
                  + (" negative" if value < 0 else ""),
              ),
              metadata,
          )
  
          val = self._format(serie, i)
          self._tooltip_data(
              dots, val, x, y, "centered", self._get_x_label(i)
          )
          self._static_value(serie_node, val, x, y, metadata)
  
file_path: pygal/pygal/graph/dot.py
imports: from math import log10
  from pygal.graph.graph import Graph
  from pygal.util import alter, cached_property, decorate, safe_enumerate
  from pygal.view import ReverseView, View
label_desc: Use image node_id 1 for calling the Dot obj's underlying member method code with example usage: obj.dot(serie, r_max) without return types