[ANN] GraphViz for Squeak

John Pierce john.raymond.pierce at gmail.com
Thu Mar 3 05:58:04 UTC 2005


Hi all,

For those of you familiar with the AT&T Research Project called
GraphViz, I will cut to the chase and announce that I have developed a
lightweight "builder style" Squeak interface to this open-source
package.

Download the GraphViz monticello package from
http://squeak.saltypickle.com.  I will post the package on SM soon. 
The program is limited to working on Win32 right now.  Anyone wanting
to provide Mac or nix modifications is welcomed to do so.

"To generate a sample directed graph"
graph := GraphViz new.

graph beDirected.
graph add: #A -> #B.
graph add: #B -> #J.
graph add: #A -> #D.

graph openAsMorph.
"See attached png screen shot for the output"

*Background from the GraphViz web site*

Graph visualization is a way of representing structural information as
diagrams of abstract graphs and networks. Automatic graph drawing has
many important applications in software engineering, database and web
design, networking, and in visual interfaces for many other domains.

The Graphviz layout programs take descriptions of graphs in a simple
text language, and make diagrams in several useful formats such as
images and SVG for web pages, Postscript for inclusion in PDF or other
documents; or display in an interactive graph browser. (Graphviz also
supports GXL, an XML dialect.)

Graphviz has many useful features for concrete diagrams, such as
options for colors, fonts, tabular node layouts, line styles,
hyperlinks, and custom shapes.

In practice, graphs are usually generated from an external data
sources, but they can also be created and edited manually, either as
raw text files or within a graphical editor. (Graphviz was not
intended to be a Visio replacement, so it is probably frustrating to
try to use it that way.)

Reference: http://www.graphviz.org

*Additional Information*

So basically, the Squeak interface provided here makes it fairly
straightforward to generate the "dot" language file that the GraphViz
command line programs use as input to create the graphs.  For
references on the "dot" language you can go to the graphviz web site
mentioned above.

Several examples are provided in the Squeak package if you look at the
class side of GraphViz or inspect my test cases.  Graphing Smalltalk
class hierarchies and/or class references has been a source of delight
as well as using this program to graph many relationships pertinent to
my business data.

Lastly, GraphViz will generate SVG output formats as well.  I found a
very cool Java-based Zoomable User Interface built specially to
navigate large graphs generated by GraphViz called ZGRViewer
(http://zvtm.sourceforge.net/zgrviewer.html).  If you do the
following:

graph := GraphViz new.

graph beDirected.
graph add: #A -> #B.
graph add: #B -> #J.
graph add: #A -> #D.
graph writeToFile.

generator := graph class defaultGeneratorClass new.
generator runDotOn: graph outputFormat: #svg.

Then you can open the Java ZGRViewer program and surf around the graph
file this is generated by Squeak.  Very cool for looking at large
models!

If you have any questions or want to add other enhancements let me
know.  I've just started using this myself so I will say it certainly
is for daredevils, but sure is loads of fun.

Regards,

John
-------------- next part --------------
A non-text attachment was scrubbed...
Name: simple.png
Type: image/png
Size: 2081 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20050303/dcc6b5dd/simple.png


More information about the Squeak-dev mailing list