I can create the graph below using either a point language using GraphViz directly, or using the PEAR Image_GraphViz package using PHP.

//DOT language digraph test{ URL="http://example.com/fish/"; bgcolor="#BBCAF2"; //defaults for all nodes node[style=filled, fillcolor=white, color="#8A94B4", fixedsize=true, fontname="sans-serif", fontsize=8, URL="?fish_id=\N", margin="0.02,0.02"]; //defaults for all edges edge[arrowsize=0.6, sametail=true, fontsize=8, fontname="sans-serif"]; //a few edges 57->23[color="blue"]; 42->23[color="red"]; 25->26[color="blue", label="10M"]; 25->26[color="red", label="10F"]; //etc. //a few nodes 29[label="100128 AB"]; 38[label="100730 AB"]; 39[label="110208"]; //etc. }
Dot files can set default attributes for all four element types (graph, cluster, node, edge). It seems that Image_GraphViz can only set default values โโfor graph level attributes.
<?php $gatts=array( //defaults for graph level attributes 'URL'=>"http://example.com/fish/", 'bgcolor'=>"#ff0000", 'font'=>"sans-serif", ); $gv=new Image_GraphViz(true,$gatts,'test',false,true); $q_ne="SELECT parentname, parent_id, childname, child_id, parenttype, parentcount FROM fish_crosses"; $r_ne=$dbii->query($q_ne); while($ne=$r_ne->fetch_assoc()){ $nodeatts=array('label' => $ne['parentname'], 'style'=>"filled", 'fillcolor'=>'#ffffff', 'fixedsize'=>true, 'fontname'=>"sans-serif", 'fontsize'=>8); if(!$ne['child_id']) { $gv->addNode($ne['parent_id'], $nodeatts); continue; } if($ne['parenttype']=='dam'){ $ecolor= '#ff0000'; $elabel= $ne['parentcount'].'F'; } else { $ecolor= '#0000ff'; $elabel=$ne['parentcount'].'F'; } $edgeatts=array('color'=>$ecolor, 'fontname'=>'sans-serif','fontsize'=>8); if($ne['parentcount']) $edgeatts['label']=$elabel; $gv->addEdge(array($ne['parent_id']=>$ne['child_id']), $edgeatts); $gv->addNode($ne['parent_id'], $nodeatts); $gv->addNode($ne['child_id'], $nodeatts); } echo $gv->image('png'); ?>
Does anyone know the syntax for adding default attribute values โโfor nodes and edges to an Image_GraphViz object?