2011-02-02 8 views
5

Las disculpas de antemano es que estoy haciendo un uso indebido de la terminología, y las correcciones son apreciadas. Estoy fascinado con los gráficos dirigidos, pero nunca tengo el conocimiento matemático/cs para saber de qué están realmente, solo me gusta la tecnología porque hace diagramas útiles.Biblioteca PHP para generar archivos xdot a partir de archivos de puntos

Estoy tratando de crear una función de aplicación web que represente un gráfico dinámico dirigido al navegador. Recientemente descubrí Canviz, que es un procesador de xdot basado en cavas, que me gustaría utilizar.

Canviz es impresionante, pero hace xdot archivos, que (aparecerá?) Para contener toda la lógica de posicionamiento complicado

/* example xdot file */ 
digraph abstract { 
    graph [size="6,6"]; 
    node [label="\N"]; 
    graph [bb="0,0,1250,612", 
     _draw_="c 9 -#ffffffff C 9 -#ffffffff P 4 0 -1 0 612 1251 612 1251 -1 ", 
     xdotversion="1.2"]; 
    S1 [pos="464,594", width="0.75", height="0.5", _draw_="c 9 -#000000ff e 464 594 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 464 588 0 15 2 -S1 "]; 
    10 [pos="409,522", width="0.75", height="0.5", _draw_="c 9 -#000000ff e 409 522 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 409 516 0 15 2 -10 "]; 

    S1 -> 10 [pos="e,421.43,538.27 451.52,577.66 444.49,568.46 435.57,556.78 427.71,546.5", _draw_="c 9 -#000000ff B 4 452 578 444 568 436 557 428 546 ", _hdraw_="S 5 -solid c 9 -#000000ff C 9 -#000000ff P 3 430 544 421 538 425 548 "]; 
} 

Los archivos que estoy generando con mi solicitud son dot archivos, que contienen ninguno de esta lógica de posicionamiento

digraph g { 

    ranksep=6 
    node [ 
     fontsize = "16" 
     shape = "rectangle" 
     width =3 
     height =.5 
    ]; 
    edge [ 
    ]; 

    S1 -> 10 
}  

estoy en busca de una librería PHP que puede convertir mi archivo dot en un archivo xdot que puede ser consumido por Canviz. Me doy cuenta de que el programa de línea de comandos dot puede hacer esto, pero esto es para una aplicación web PHP redistribuible, y preferiría evitar los binarios como dependencias.

Mi problema principal: estoy generando archivos dot basados ​​en relaciones dirigidas simples, y quiero mostrar el gráfico visual a los usuarios finales en un navegador. Me gustaría hacer esto sin tener que depender de la presencia de un programa binario en particular en el servidor. Creo que la mejor solución para esto es Canviz + PHP para generar archivos xdot. Estoy buscando una biblioteca PHP que pueda hacer esto. Sin embargo, estoy más que abierto a otras soluciones.

Respuesta

1

¿Has mirado Image_GraphViz? Realmente es solo un contenedor para el binario, pero por lo que parece, no creo que encuentres algo mejor y esto al menos evita que tengas que hacer llamadas de línea de comando directas desde tu script PHP.

$dot_obj = new Image_GraphViz(); 
$dot_obj -> load('path/to/graph.gv'); 
$xdot = $dot_obj -> fetch('xdot'); 
Cuestiones relacionadas