aimclub / GOLEM

Graph Optimiser for Learning and Evolution of Models
https://thegolem.readthedocs.io
BSD 3-Clause "New" or "Revised" License
60 stars 7 forks source link

Scalable graph vizualization #214

Closed MorrisNein closed 11 months ago

MorrisNein commented 11 months ago

Solves #56

Transferred scalable matplotlib graph visualization from other project.

Changes:

pep8speaks commented 11 months ago

Hello @MorrisNein! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers:

Comment last updated at 2023-10-26 11:40:58 UTC
MorrisNein commented 11 months ago

@gkirgizov, @maypink, @YamLyubov, у вас есть под рукой большие осмысленные графы для примера визуализации?

maypink commented 11 months ago

@gkirgizov, @maypink, @YamLyubov, у вас есть под рукой большие осмысленные графы для примера визуализации?

что такое осмысленный граф в контексте голема? ML-ные графы большие точно лежат в федоте где-то, а здесь можно генерировать рандомные DAGи так: g = generate_labeled_graph('dag', 10) optg = BaseNetworkxAdapter().adapt(g)

MorrisNein commented 11 months ago

что такое осмысленный граф в контексте голема?

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

а здесь можно генерировать рандомные DAGи так: g = generate_labeled_graph('dag', 10) optg = BaseNetworkxAdapter().adapt(g)

Спасибо, попробую

MorrisNein commented 11 months ago

С рандомными графами выглядит так поменбше image поболбше image

MorrisNein commented 11 months ago

Также по обсуждениям с @gkirgizov сделаю иерархическую раскладку опциональной (и наверное не дефолтной, пусть будет дефолтной только для дочерних проектов, где это нужно).

MorrisNein commented 11 months ago

Добавил 2 аргумента:

    graph.show(nodes_labels=nodes_labels, edges_labels=edges_labels, nodes_layout_function=nx.spring_layout,
               node_names_placement='legend')

Кроме того, лейблы на легенде теперь упорядочены по алфавиту.

image

image

codecov-commenter commented 11 months ago

Codecov Report

Merging #214 (7d30da7) into main (3e29ad5) will decrease coverage by 1.74%. Report is 8 commits behind head on main. The diff coverage is 59.21%.

:exclamation: Current head 7d30da7 differs from pull request most recent head ae47e64. Consider uploading reports for the commit ae47e64 to get more accurate results

@@            Coverage Diff             @@
##             main     #214      +/-   ##
==========================================
- Coverage   73.72%   71.98%   -1.74%     
==========================================
  Files         131      135       +4     
  Lines        7828     8129     +301     
==========================================
+ Hits         5771     5852      +81     
- Misses       2057     2277     +220     
Files Coverage Δ
golem/core/dag/graph.py 77.27% <100.00%> (+0.26%) :arrow_up:
golem/core/optimisers/adaptive/neural_mab.py 17.15% <ø> (ø)
golem/visualisation/graph_viz.py 61.07% <58.84%> (-2.08%) :arrow_down:

... and 20 files with indirect coverage changes

maypink commented 11 months ago

здорово! с модом 'label' хорошо получается, а к автоматическому есть вопросы -- будто бы размер шрифта получается по умолчанию слишком большим даже на маленьких графах image

aim-pep8-bot commented 11 months ago

Hello @MorrisNein! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

Line 360:25: W503 line break before binary operator Line 361:25: W503 line break before binary operator

Comment last updated at 2023-10-26 11:40:58 UTC
MorrisNein commented 11 months ago

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

Поправил

image

image