code: func (ui *webInterface) dot(w http.ResponseWriter, req *http.Request) {
  	rpt, errList := ui.makeReport(w, req, []string{"svg"})
  	if rpt == nil {
  		return // error already reported
  	}
  
  	// Generate dot graph.
  	g, config := report.GetDOT(rpt)
  	legend := config.Labels
  	config.Labels = nil
  	dot := &bytes.Buffer{}
  	graph.ComposeDot(dot, g, &graph.DotAttributes{}, config)
  
  	// Convert to svg.
  	svg, err := dotToSvg(dot.Bytes())
  	if err != nil {
  		http.Error(w, "Could not execute dot; may need to install graphviz.",
  			http.StatusNotImplemented)
  		ui.options.UI.PrintErr("Failed to execute dot. Is Graphviz installed?\n", err)
  		return
  	}
  
  	// Get all node names into an array.
  	nodes := []string{""} // dot starts with node numbered 1
  	for _, n := range g.Nodes {
  		nodes = append(nodes, n.Info.Name)
  	}
  
  	ui.render(w, "graph", rpt, errList, legend, webArgs{
  		HTMLBody: template.HTML(string(svg)),
  		Nodes:    nodes,
  	})
  }
docs: // dot generates a web page containing an svg diagram.