Я ищу библиотеку интерактивного графического интерфейса для Python.
В разделе " graph" я имел в виду набор узлов, соединенных множеством вершин (а не график значений по оси xy, ни сетка пикселей).
Под "интерактивным" я подразумевал, что я могу перетаскивать узлы вокруг, и мне нужно иметь возможность щелкнуть узлы/вершины и передать библиотеке узлы/вершины моим обратным вызовам, что может добавить/удалять узлы/вершины или отображаемую информацию (я не могу загрузить полный график при запуске, поскольку набор данных слишком велик/сложный, вместо этого я буду загружать только необходимые фрагменты данных в зависимости от пользовательских входов).
В Python я имел в виду язык программирования Python, библиотека графического отображения должна иметь привязку CPython. У меня есть Python 2.7 и Python 3.1, но при необходимости можно понизить до 2.6. Это требование языка связано с тем, что набор данных, с которыми я работаю, имеет только привязку Python.
Библиотека графического отображения должна поддерживать ориентированный график и иметь возможность автоматически компоновать узлы. Мне нужно поставить метки на узлы.
Предпочтительно, алгоритм компоновки должен размещать соседние узлы рядом друг с другом. Он должен иметь возможность обрабатывать от 100-1000 узлов и примерно 300-4000 вершин разумно в моем 4-летнем ноутбуке (я обычно начинаю с около 100 узлов, но число может расширяться в зависимости от ввода пользователя). Предпочтительно это должна быть библиотека с не слишком большим количеством зависимостей (за исключением, возможно, для Gnome). Предпочтительный вариант с открытым исходным кодом.
Я уже написал простой прототип своей программы, используя Tkinter Canvas, но для расширения программы мне нужна более серьезная библиотека графического интерфейса. Я посмотрел на graphviz и matplotlib, но, по-видимому, они предназначены только для работы со статическими графами и, видимо, потребуется значительная работа для интерактивных манипуляций (исправьте меня, если я ошибаюсь, я только посмотрел на них кратко), Я также попытался создать граф в SVG файле и использовать Inkscape для его просмотра, но он слишком медленный и занимает слишком много памяти, а из-за большого количества вершин он становится запутанным беспорядком.