Here's an example of how to draw a 2-D graph. First, get rid of the current graphics (since there may be graphics from the previous tutorial):

draw delete all

Define a function to graph, in this case, a parabola.

proc f {x} { expr $x * $x }

The following function draws a graph given the function name, the start and end values, and the step size.

proc draw_graph {function start end step} { # do some error checking if {$step < 0} {set step -$step} if {$step == 0} {error "draw_graph: cannot have step size of zero"} if {$start > $end} { set tmp $start set start $end set end $tmp } # turn materials off draw materials off # draw the data in green draw color green # calculate and save the initial coordinates set y0 [$function $start] set x0 $start set miny $y0 set maxy $y0 # go through the coordinates $start+$step to $end, $step at a time for {set x1 [expr $start + $step]} {$x1 <= $end} { set x1 [expr $x1 + $step]} { # calculate the function value for this point set y1 [$function $x1] # and draw a line to connect the previous point to the current one draw line "$x0 $y0 0" "$x1 $y1 0" # save the min/max values of y, and copy the x1,y1 into x0,y0 if {$y1 < $miny} {set miny $y1} if {$y1 > $maxy} {set maxy $y1} set y0 $y1 set x0 $x1 } # draw a red box around everything draw color red draw line "$start $miny 0" "$end $miny 0" draw line "$start $miny 0" "$start $maxy 0" draw line "$end $maxy 0" "$end $miny 0" draw line "$end $maxy 0" "$start $maxy 0" # and put some labels down draw text "$end $miny 0" "x ->" draw text "$start $maxy 0" "f(x)" }Copy these two definitions into VMD's text console (this script is available from the VMD script library at

draw_graph f -5 4 0.2and reset the view. Presto, a nice little parabola.

vmd@ks.uiuc.edu