Desktop network analyzing and visualization software
- General features
- Layout
- Community detection
- Serialization formats
- Roadmap
- Build and execution
- Troubleshooting
- Technologies
- Acknowledgments
- Authors
- License
- Displays vertex and edge count
- Showing/hiding vertex labels
- Customizable edge color
- Configurable amount of rendered edges
- Manual vertex dragging (dragging vertex during layout makes its community follow it)
- Max UI updates per second — the tradeoff between layout speed and smoothness (set a lower value for faster layout and a higher value for smoother video)
- Iterations per second — the number of algorithm iterations completed in the last second
- Tolerance — speed-accuracy tradeoff (set a higher value to make vertices move faster and a lower value to make them oscillate less)
- Scaling — resulting layout size (a higher value results in a larger layout)
- Strong gravity — when turned on makes gravity force attract distant vertices more, resulting in a more compact layout
- Gravity — force preventing disconnected components from drifting away
- Prevent overlap — when turned on drastically repulses overlapping and nearly overlapping vertices (slows down layout process, it's recommended to turn on this option when the layout is almost completed)
- Dissuade hubs — when turned on grants vertices with a high indegree a more central position
- Attraction types:
- Linear — default attraction type
- Logarithmic — makes clusters tighter but converges slower in some cases
- Edge weight exponent — influence of edge weights on a layout
- Multithreaded — when turned on, some computations are performed in parallel
- Barnes-Hut approximation — when turned on considerably improves performance by approximating repulsion force
- Barnes-Hut theta — acceptable repulsion approximation (higher theta improves performance but results in unnatural vertex formations)
- Max coordinate deviation — resulting layout size
- Pause between iterations — when turned on makes the algorithm pause after each iteration, letting the user examine intermediate results
Vertices are stored in the Vertices
table with the following columns:
id
— unique textual identifier of the vertexx
andy
— vertex positionradius
— vertex radiusred
,green
, andblue
— vertex color
Edges are stored in the Edges
table with the following columns:
from
— identifier of the edge headto
— identifier of the edge weightweight
— edge weight
Vertices are represented as Neo4j nodes with the following properties:
id
— unique textual identifier of the vertexx
andy
— vertex positionradius
— vertex radiusred
,green
, andblue
— vertex color
Edges are represented as Neo4j relationships between corresponding nodes and have the following property:
weight
— edge weight
- Add example graphs
- Support opening non-analyzed graphs
- Store colors for communities and not for individual vertices
- Support CSV serialization format
- Implement centrality algorithm
To build or run this project, you must use JDK 8 with JavaFX (jfxrt.jar
) package installed.
See Troubleshooting for more details.
Build: ./gradlew assemble
Run: ./gradlew run
Run tests: ./gradlew test
Run tests in headless mode (without UI): ./gradlew test -Pheadless=true
👻 java.lang.NoClassDefFoundError: javafx/application/Application
👻 Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
class tornadofx.UIComponent, unresolved supertypes: javafx.event.EventTarget
class tornadofx.App, unresolved supertypes: javafx.application.Application
class org.controlsfx.control.ControlsFXControl, unresolved supertypes: javafx.scene.control.Control
class tornadofx.FXTask, unresolved supertypes: javafx.concurrent.Task
class tornadofx.Fieldset, unresolved supertypes: javafx.scene.layout.VBox
💡 You are using JDK distribution without JavaFX (jfxrt.jar
) package.
✅ Install JDK distribution that includes JavaFX by default (e.g. Oracle JDK 8), update JAVA_HOME
system variable, and restart your computer.
UI: JavaFX, TornadoFX, ControlsFX
Databases: SQLite (via Exposed Framework), Neo4j
Tests: Junit5, Mockk, TestFX
- ForceAtlas2, a Continuous Graph Layout Algorithm for Handy Network Visualization Designed for the Gephi Software
- Fast unfolding of communities in large networks
- graphs-visualization-sandbox
- Ilya Muravjov - layout, SQLite serializer, UI
- Egor Denisov - community detection, Neo4j serializer