Pull to refresh

Comments 35

Если блуждать взглядом по второй картинке ДПВ, мне одному кажется, что они шевелятся?
Это потомучто 2 ночи или всётаки какой-то оптический эффект?
Просто глаз выпуклый, а картинка плоская, вот при перемещении зрачка окружающие фокус мелкие детали получают иллюзию движения.
На этом некоторые оптические иллюзии построены.
вроде бы для подобной иллюзии должен быть определённый дрифт контраста цвета у «движущихся» элементов: www.michaelbach.de/ot/mot_snakeAdLib/index.html
а тут этого явно нету.
Возможно конечно усталость глаз после рабочего дня также делает своё дело. Одно скажу, это не спец-эффект, там простой цикл генерации всевозможных графов до шести узлов включительно.
networkx.lanl.gov/examples/drawing/atlas.html
У меня всего 12 ночи, а они шевелятся.
Подправил. Подписывать конечно может. И дуги и вершины. Вот к примеру орграф
Ещё возможности по настройке шрифта, размера и цвета как текста, так и формы и заливки узла. Плюс можно добавлять неограниченное количество своих свойств. Вот только как сказано ниже, с уникодом проблемы пока
В 3d это выглядит примерно так: .
Вот ссылка на проект:
Сорри, кармы не хватает для отображения ссылок. Проект называется ostis.net. Видео можно найти на ютюбе.
Нет, не NetworkX. Потрогать можно здесь: sourceforge.net/projects/ostis/
А по существу:
там уже починили проблемы с хранением юникода в качестве меток узлов/дуг и выводом этого в dot, или положились на питон 3.x?
С уникодом всё ещё проблемы, да
да уж.
причом во всех доступных рисовалках.
Как глянул на рисунок — топологии простых графов, к-а-а-а-а-к представил себе такую рабочую сеть — сразу захотелось повеситься.
А за либу мерси — можно поиграться на досуге.
Полезно. Для некоторых задач не нужно будет выдумывать велосипеды.
Хотя иногда графы приятно самому «прочувствовать».
Скажите, а как можно по-нормальному нарисовать дерево заданное в виде ориентированного графа?
Что Вы подразумеваете под «нормально»?
Graphviz даёт больше контроля, но и чуть сложней в использовании. По умолчанию для визуализации используется matplotlib, которая имеет своё представление как надо лучше. В принципе можно получить что-то похожее на это:
Извините, что не уточнил сразу.
Я хочу рисовать планарный граф, у которого все вершины одного яруса лежат на одной прямой.
Например вот так:
image
Готовой функции для такого дерева я там не видел. Меня вполне устроило дерево из моего предыдущего коммента и я просто глубже не копал.
Уверен, можно настроить и для вывода планарного графа. NetworkX заточен под работу с данными и визуализация вторична.
Вот документация
networkx.lanl.gov/reference/drawing.html
Также никто не мешает использовать другие либы для вывода изображений.

Возможно кто-нибудь другой сталкивался и отпишется
dot сам рисует деревья «нормально», хотя строгое выравнивание не гарантируется.
Насколько я понимаю, DOT — это язык и сам он ничего не рисует, есть программы для визуализации.
Дело в том, что есть готовый набор скриптов на python, которые уже юзают networkx в данный момент.
И если использовать dot для python, то для этого видел только одну либу: python-graph, а значит нужно либо переходить на него, либо писать модуль для экспорта networkx графов в DOT. Оба варианта достаточно затратные по времени.

Спасибо за информацию по DOT
В статье на вики о DOT упоминается Graphviz, так-что networkx.lanl.gov/pygraphviz/ вполне должен работать с ним. Я так понимаю его разрабатывают те же, кто и NetworkX
в пакет graphviz входит несколько утилит для рисования, реализующих разные алгоритмы расклада:
dot, neato, circo, итп

вот тот, который /usr/bin/dot — рисует «нормально»
в networkx есть функция write_dot которая выводит граф в формате dot
И делает это она используя pygraphviz, который в свою очередь является обёрткой над graphviz
Да вот только что во время написания скрипта на неё наткнулся, пошёл сюда написать, а вы уже ответили.

Спасибо, буду юзать.
имейте ввиду — юникод не поддерживается, никак.
если метки с русскими буквами, то придётся писать свою функцию выгрузки в dot.
networkx.write_dot завязан на pygraphviz, который под windows в чистом виде не поставляется.
После правок инсталяционного файла и компиляции нужной библиотеки при помощи Visual Studio ничего не заработало.

Ждём пока у разработчика pygraphviz появится девелоперская машина под windows. К слову говоря, времени, потраченного на попытки установить pygraphviz под windows хватило бы на реализацию визуализации networkx дерева на matplotlib.

В любом случае спасибо за советы.
Доброго времени суток! Пытаюсь написать автотест, основанный на рохождении орграфа. В вашей статье написано про встраивание функции в ребро. Можете показать чуть более развернутый пример с обходом графа и выполнением функций на рёбрах? Доки курятся с трудом, а сроки горят. Заранее спасибо
Доброго дня. К сожалению, давно не заходил на Хабр, не увидел Вашего вопроса во время.
Насколько я понял Вашу задачу, Вы строите граф Вашей проблемы и при переходе от теста к тесту хотите выполнять ещё какие-то функции зависимые именно от этих двух тестов: текущего и следующего. Если это так, то, в принципе, всё просто, при создании дуги между узлами 2 и 3 просто добавляете нужные Вам параметры, и затем, при обходе вызываете нужную Вам функцию с параметрами сохранёнными в дуге.
Если Вам нужно ещё и разные функции вызывать, то предлагаю записывать параметр в виде JSON строки, как-то так: "{'function_name':'func_1','param_1':'p1','param_2':'p2'}". Тогда парсите эту строку в объект, и вызываете то, что нужно с требуемыми параметрами.

G.add_edge(2,3,weight=0.9) # задаётся значение атрибута weight
Sign up to leave a comment.

Articles