docs: def graph_dot(self):
          """
          Export a graph of the data in dot format.
          """
          default_graphviz_template = """
  digraph role_dependencies {
          size="%size"
          dpi=%dpi
          ratio="fill"
          landscape=false
          rankdir="BT";
  
          node [shape = "box",
                style = "rounded,filled",
                fillcolor = "lightgrey",
                fontsize = 20];
  
          edge [style = "dashed",
                dir = "forward",
                penwidth = 1.5];
  
  %roles_list
  
  %dependencies
  }
  """
  
          roles_list = ""
          edges = ""
  
          # remove the darkest and brightest colors, still have 100+ colors
          adjusted_colors = c.X11_COLORS[125:-325]
          random.shuffle(adjusted_colors)
          backup_colors = adjusted_colors[:]
  
          for role, fields in sorted(self.report["roles"].iteritems()):
              name = utils.normalize_role(role, self.config)
              color_length = len(adjusted_colors) - 1
  
              # reset the colors if we run out
              if color_length == 0:
                  adjusted_colors = backup_colors[:]
                  color_length = len(adjusted_colors) - 1
  
              random_index = random.randint(1, color_length)
              roles_list += "        role_{0}              [label = \"{1}\"]\n" \
                            .format(re.sub(r'[.-/]', '_', name), name)
  
              edge = '\n        edge [color = "{0}"];\n' \
                     .format(adjusted_colors[random_index])
              del adjusted_colors[random_index]
  
              if fields["dependencies"]:
                  dependencies = ""
  
                  for dependency in sorted(fields["dependencies"]):
                      dependency_name = utils.role_name(dependency)
                      dependencies += "        role_{0} -> role_{1}\n".format(
                          re.sub(r'[.-/]', '_', name),
                          re.sub(r'[.-/]', '_',
                                 utils.normalize_role(dependency_name,
                                                      self.config)
                                 )
                      )
  
                  edges += "{0}{1}\n".format(edge, dependencies)
  
          graphviz_template = default_graphviz_template.replace("%roles_list",
                                                                roles_list)
          graphviz_template = graphviz_template.replace("%dependencies",
                                                        edges)
          graphviz_template = graphviz_template.replace("%size",
                                                        self.size)
          graphviz_template = graphviz_template.replace("%dpi",
                                                        str(self.dpi))
  
          if self.out_file:
              utils.string_to_file(self.out_file, graphviz_template)
          else:
              print graphviz_template