Ich habe ein Diagramm mit 690.024 Knoten und 7.398.042 Kanten und möchte es visualisieren. Ich habe graphviz 'Punkt und gephi benutzt, aber beide enden wegen zu wenig Speicher. Gibt es eine Möglichkeit, dieses Problem zu beheben?Große Graphen visualisieren
Antwort
Gephi hat eine Begrenzung basierend auf der Menge an Speicher, die ihm in JVM zugewiesen wurde. Überprüfen Sie diese http://gephi.org/users/requirements/, um Änderungen vorzunehmen.
Ich würde vorschlagen, Stanford Network Analysis Platform (SNAP) zu verwenden.
Die Kern-SNAP-Bibliothek ist in C++ geschrieben und für maximale Leistung und kompakte Graphendarstellung optimiert.
Es skaliert problemlos zu massiven Netzwerken mit Hunderten von Millionen von Knoten und Milliarden von Kanten. Es manipuliert effizient große Graphen, berechnet strukturelle Eigenschaften, generiert reguläre und zufällige Graphen und unterstützt Attribute an Knoten und Kanten. Neben der Skalierbarkeit für große Graphen besteht eine zusätzliche Stärke von SNAP darin, dass Knoten, Kanten und Attribute in einem Graphen oder einem Netzwerk während der Berechnung dynamisch geändert werden können.
Versuchen Sie Tulip. Ich habe die Quelle heruntergeladen und neu erstellt, es ist einfach, wenn Sie Qt SDK installiert haben.
bearbeiten Ich denke, dass graphviz Prozessor für große Graphen sfdp sein sollten, finden Sie in der ersten Diskussion (sehr große Grafik Laden nicht)
Tulip funktioniert gut für kleinere Graphen, aber für meine Grafik ist es nach einem Tag abgestürzt. – AliBZ
Möglicherweise möchten Sie Hive plots prüfen, ob Sie die Beziehungen zwischen allen Kanten sichtbar zu machen müssen für ein Diagramm dieser Größe. Wenn Sie ein Diagramm erstellen müssen, in dem Knoten und Kanten angezeigt werden, sollten Sie versuchen, igraph zu testen, das über eine Python- und R-Schnittstelle verfügt. Ich habe einige sehr große Graphen konstruiert, die igraph durch R verwenden, aber ich kann mich nicht an die Speicheranforderungen erinnern (dies würde wahrscheinlich sowieso von den Daten abhängen).
Wir haben http://www.github.com/graphistry/pygraphistry erstellt, um dies von den meisten Browsern und Notebooks aus zu ermöglichen. Die Idee ist, WebGL zu verwenden, um die großen Graphen (Pan/Zoom/etc.) Zu rendern und den Großteil der Echtzeitberechnung (Layout, Filter, etc.) in eine GPU-Cloud auszulagern. Es ist ähnlich wie bei Gephi und Cytoscape, aber mit mehr Fokus auf die Skalierung auf große Graphen und die Rationalisierung der Datenanalyse und die Integration in Web-Apps und Notebook-Umgebungen.
LGL verwendet in einem solchen Fall für statische Visualisierungen zu arbeiten - in einigen Jahren mindestens :) vor
http://lgl.sourceforge.net/ http://www.ncbi.nlm.nih.gov/pubmed/15184029?dopt=Abstract
ich es zB für eine Figur verwendet: https://static-content.springer.com/image/art%3A10.1186%2F1471-2105-7-276/MediaObjects/12859_2006_Article_1015_Fig2_HTML.jpg
in dem Papier : http://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-7-276 mit Daten mit einer vergleichbaren Anzahl von Knoten und Kanten.
Das ist wirklich nett von dir, junger Mann. Sei immer noch so nett und mutig und schreib mir eine E-Mail mit deinem richtigen Namen. Ich würde gerne mit Ihrem Betreuer sprechen. Pozdrowienia, Michał Okoniewski, Dr. hab, ETH Zürich. – MichalO
Wie viel RAM haben Sie zur Verfügung? In welchem Format sind die Graphen? –
Ich habe 24 GB RAM und derzeit ist mein Diagramm im Punktformat, aber ich kann es zu nichts ändern. – AliBZ