2010-03-26 22 views
5

Me gustaría una herramienta para crear un diagrama en un lenguaje de programación, tal vez algo así como lua.¿Existe una buena herramienta para crear diagramas mediante programación?

¿Hay alguna herramienta diseñada para eso?

+0

Creo que se puede hacer algunos diagramas bonitas en látex http://tex.stackexchange.com/questions/149602/drawing-flow-diagram-in-latex-using-tikz – lovelyVector

+0

Para diagramas simples puede usar látex. http://tex.stackexchange.com/questions/149602/drawing-flow-diagram-in-latex-using-tikz – lovelyVector

Respuesta

3

Sí, puede generar archivos .dot para Graphviz. Dado que estos son archivos de texto, puede hacerlo desde cualquier idioma. Escribí hace un tiempo a post sobre la autogeneración de diagramas de árbol binario a partir del código C usando Graphviz.

+0

Sí, pero los archivos .dot no le permiten moverse por la ubicación de los elementos. ¿Derecha? Estaba buscando un mayor control de la posición de las cajas, flechas, etc. – FelipeC

+0

@felipec: entonces, considere una de esas bibliotecas generadoras de SVG –

1

Un poco retro, tal vez, pero siempre hay Pic. Salidas a .eps que pueden ser fácilmente convert ed a cualquier cosa que desee.

La entrada es un poco de la vieja escuela, pero como es de texto completo, puede ser dirigida por cualquier idioma (incluso Lua) que tenga salida de texto. Aquí hay un ejemplo de un diagrama de una estructura de datos.

.PS 
boxwid = .5; boxht = .25 
down 
Base: box "base" 
Used: box "used" 
Max: box "max" 

move to Base.e 
move right 

right 
Mfile: box dashed wid 3 ht 5 
move to Mfile.nw; move down .125 

Mtab: right; box "nexttab"; box "nextent" 
move to Mtab.sw; move down .25 

Tab: right; box "adr0"; box "mark"; box "sz" 
move to Tab.sw; move down .25 
Tab: right; box "adr1"; box "mark"; box "sz" 
move to Tab.sw; move down .25 
Tab: right; box "adr2"; box "mark"; box "sz" 
move to Tab.sw; move down .25 
Tab: right; box "adr3"; box "mark"; box "sz" 
move to Tab.sw; move down .25 
Tab: right; box "adr4"; box "mark"; box "sz" 
move to Tab.sw; move down .25 
Tab: right; box "adr5"; box "mark"; box "sz" 
move to Tab.sw; move down .25 
Tab: right; box "adr6"; box "mark"; box "sz" 
move to Tab.sw; move down .25 
Tab: right; box "adr7"; box "mark"; box "sz" 
move to Tab.sw; move down .25 
Tab: right; box "adr8"; box "mark"; box "sz" 
move to Tab.sw; move down .25 
Tab: right; box invis "..."; box invis "..."; box invis "..." 
move to Tab.sw; move down .25 
Tab: right; box "adrN"; box "mark"; box "sz" 

arrow from Base.e to Mfile.nw 
arrow from Used.e to Tab.sw down .125 
arrow from Max.e to Mfile.sw 

.PE 

Indexed-Memory Data Structure

Cuestiones relacionadas