Библиотека для рендеринга Directed Graphs (похожа на graphviz) на Google App Engine

Я ищу библиотеку Java или Python, которая может отображать графики на языке Dot в качестве файла изображения. Проблема в том, что мне нужна библиотека, которую я могу использовать в Google App Engine. В основном я ищу библиотеку, которая может преобразовать текстовое описание ориентированного графа в изображение графика.

Например:

Скрытый список краев:

[A,B] [B,C] [A,C] [C,D] 

В этом изображении:

Пример изображения

Я использовал Graphviz для этого примера, но я знаю, что использовать его с Google App Engine не представляется возможным.

Canviz – это то, что вы ищете: это библиотека JavaScript для рисования графиков Graphviz на холсте веб-браузера. Он работает с большинством браузеров .

Использование Canviz имеет преимущества для вашего веб-приложения для создания и отправки растровых изображений и изображений в браузер:

  • Сервер должен только иметь Graphviz генерировать xdot текст; это быстрее, чем генерация растровых изображений.
  • В браузер должен быть передан только текст xdot; это меньше данных двоичного изображения, и, если браузер поддерживает его (что больше всего подходит), текст может быть сжат gzip- или bzip2.
  • Веб-браузер выполняет чертеж, а не сервер; это снижает нагрузку на сервер.
  • Пользователь может изменять размер графика без необходимости привлечения сервера; это быстрее, чем при рисовании сервера и отправки графика в другом размере.

Чтобы увидеть это в действии, смотрите здесь .

API Google Chart теперь поддерживает GraphViz экспериментально . (Обратите внимание, что весь проект графических карт официально устарел.)

Вы можете взглянуть на проект, основанный на флеш- перфузии, если вам просто нужно отобразить график и не включить его в качестве изображения.

У них есть некоторые примеры приложений библиотеки, такие как этот график зависимостей .

Я не думаю, что есть такая чистая библиотека python, лучше всего использовать NetworkX , она может рисовать с помощью matplotlib или pygraphviz. Возможно, вы можете изменить код matplotlib networkx для рисования на стороне сервера, вот код

Другая проблема заключается в том, что в google-приложении нет API-интерфейса чертежа, но вы можете просто использовать SVG для создания таких графиков или API-интерфейсы Google.