Я могу создать приведенный ниже график с использованием либо точечного языка, используя GraphViz напрямую, либо с помощью пакета PEAR Image_GraphViz с использованием PHP.1009 *
Файлы точек могут устанавливать атрибуты по умолчанию для всех четырех типов элементов (график, кластер, узел, ребро).Похоже, что Image_GraphViz может устанавливать значения по умолчанию только для атрибутов уровня графа.
<?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');
?>
Кто-нибудь знает синтаксис для добавления значений атрибутов по умолчанию для узлов и ребер в объект Image_GraphViz?