Как рекомендовано другими авторами, определенно Graphviz . Он принимает входной файл, назовем его foaf.dot, в следующем формате:
graph G {
"George Formby" [shape=custom, shapefile="file:formby.png"];
"Michael Jackson" [shape=custom, shapefile="file:jackson.png"];
"George Formby" -- "Michael Jackson";
"Fred Flinstone" -- "Michael Jackson";
"Michael Jackson" -- "Steve McQueen";
}
Обратите внимание, что этот файл описывает неориентированный график (надеюсь, ваши дружеские отношения взаимны). Синтаксис для ориентированных графов аналогичен.
Чтобы вывести свой график в файл PDF (при условии, что вы уже установили graphviz), выполните следующую команду
dot -Tpdf foaf.dot > foaf.pdf
Graphviz поддерживает несколько форматов вывода, отличных от pdf, подробности см. В документации.
Я считаю, что программа 'dot' обычно обеспечивает наилучшие выходные результаты, однако graphviz содержит всего 5 программ верстки. Из документации:
- точка - фильтр для рисования ориентированных графов
- neato - фильтр для рисования неориентированных графиков
- twopi - фильтр для радиальных раскладок графиков
- circo - фильтр для круговой разметки графиков
- fdp - фильтр для рисования неориентированных графиков