def draw(self, dx=<NUM_LIT:0>, dy=<NUM_LIT:0>, weighted=False, directed=False, highlight=[], traffic=None):
self.update()<EOL>s = self.styles.default<EOL>s.graph_background(s)<EOL>_ctx.push()<EOL>_ctx.translate(self.x+dx, self.y+dy)<EOL>if traffic:<EOL><INDENT>if isinstance(traffic, bool): <EOL><INDENT>traffic = <NUM_LIT:5><EOL><DEDENT>for n in self.nodes_by_betweenness()[:traffic]:<EOL><INDENT>try: s = self.styles[n.style]<EOL>except: s = self.styles.default<EOL>if s.graph_traffic:<EOL><INDENT>s.graph_traffic(s, n, self.alpha)        <EOL><DEDENT><DEDENT><DEDENT>s = self.styles.default<EOL>if s.edges:<EOL><INDENT>s.edges(s, self.edges, self.alpha, weighted, directed)<EOL><DEDENT>for n in self.nodes:<EOL><INDENT>try:  s = self.styles[n.style]<EOL>except: s = self.styles.default<EOL>if s.node:<EOL><INDENT>s.node(s, n, self.alpha)<EOL><DEDENT><DEDENT>try: s = self.styles.highlight<EOL>except: s = self.styles.default<EOL>if s.path:<EOL><INDENT>s.path(s, self, highlight)<EOL><DEDENT>for n in self.nodes:<EOL><INDENT>try:  s = self.styles[n.style]<EOL>except: s = self.styles.default<EOL>if s.node_label:<EOL><INDENT>s.node_label(s, n, self.alpha)<EOL><DEDENT><DEDENT>_ctx.pop()<EOL>
Layout the graph incrementally.

        The graph is drawn at the center of the canvas.
        The weighted and directed parameters visualize edge weight and direction.
        The highlight specifies list of connected nodes. 
        The path will be colored according to the "highlight" style.
        Clicking and dragging events are monitored.