Submitted:
22 April 2024
Posted:
23 April 2024
You are already at the latest version
Abstract
Keywords:
1. Introduction
2. Materials and Methods
2.1. Simple Spring Algorithm
| Algorithm 1: Spring algorithm by Eades |
|
1. algorithm SPRING(G: graph); 2. place vertices of G in random locations; 3. repeat M times 4. calculate the force on each vertex; 5. move the vertex c4 * (force on vertex) 6. draw graph on CRT or plotter. |
2.2. Force-Directed Algorithm
| Algorithm 2: Force-directed algorithm |
|
1. function calculateDirectionVector(graph, node): 2. direction_vector = (0, 0, 0) 3. for each n in graph.nodes: 4. direction = n.directionTo(node).normalized 5. direction_vector += direction if n.isIncidentTo(node) else -1 * direction 6. return direction_vector 7. 8. function calculateForce(graph, node): 9. force = 0 10. for each vertex in graph.vertices: 11. f = vertex(node).weight if vertex(node).hasWeight else 1 12. force += f if vertex.isIncidentTo(node) else -f 13. return force 14. 15. function calculateVelocity(node, force, mass, initial_acceleration): 16. acceleration = force / mass 17. velocity = initial_acceleration * acceleration 18. return velocity 19. 20. // Force-drive algorithm: 21. for each node in G do 22. direction_vector = calculateDirectionVector(graph, node) 23. force = calculateForce(graph, node) 24. velocity = calculateVelocity(node, force, node.mass, initial_acceleration) |
2.3. Modified Force-Directed Algorithm with Springs
2.4. Force-Directed Algorithm with Springs and Controlled Placement
2.5. Datasets
3. Experimental Results
3.1. Evaluation Metrics
- A single, unreadable cluster forms within the displayed graph.
- The distance between nodes always increases, without ever reaching a stable state.
| Algorithm 3: Average vertex distance metric |
|
1. // Avg. vertex distance 2. distances = new List() 3. for i in nodes: 4. for j in nodes: 5. distances.Add(Distance(i, j)) 6. // sum(distances) / distances.count 7. distances.Average() |
| Algorithm 4: Average cluster density metric |
|
1. // Avg. cluster density 2. distances = new List() 3. for each c in clusters: 4. nodes = c.nodes 5. distancesCluster = new List() 6. for i in nodes: 7. for j in nodes: 8. distancesCluster.Add(Distance(i, j)) 9. distances.Add(distancesCluster.Average()) 10. // sum(distances) / distances.count 11. distances.Average() |
| Algorithm 5: Average clusters distance metric |
|
1. // Avg. clusters distance 2. distances = new List(); 3. for each centroid in centroids: 4. for each c in centroids: 5. if c == centroid continue; 6. distances.Add(Distance(centroid, c)) 7. // sum(distances) / distances.count 8. distances.Average() |
3.2. Simple Spring Algorithm
3.3. Force-Directed Algorithm
3.4. Force-Directed Algorithm with Springs and Controlled Placement
4. Discussion
5. Conclusions
Author Contributions
Data Availability Statement
Conflicts of Interest
References
- Kobourov, S.G. Force-Directed Drawing Algorithms. In Handbook of Graph Drawing and Visualization; Tamassia, R., Ed.; CRC Press, 2013; pp. 383–408.
- Tollis, I.G.; Di Battista, G.; Eades, P.; Tamassia, R. Graph Drawing: Algorithms for the Visualization of Graphs; Pearson: Englewood Cliffs, 1998; ISBN 978-0-13-301615-4. [Google Scholar]
- Brandes, U. Drawing on Physical Analogies. In Drawing Graphs; Kaufmann, M., Wagner, D., Eds.; Lecture Notes in Computer Science; Springer: Berlin, Heidelberg, 2001; ISBN 978-3-540-42062-0. [Google Scholar]
- Tutte, W.T. How to Draw a Graph. Proc. Lond. Math. Soc. 1963, 13, 743–767. [Google Scholar] [CrossRef]
- Eades, P. A Heuristic for Graph Drawing; Congressus Numerantium, 1984; Vol. 42;
- Fruchterman, T.M.; Reingold, E.M. Graph Drawing by Force-Directed Placement. J. Softw. Pract. Exp. 1991, 21, 1129–1164. [Google Scholar] [CrossRef]
- Kawai, S.; Kamada, T. An Algorithm for Drawing General Undirected Graphs. Inf. Process. Lett. 1989, 31, 7–15. [Google Scholar] [CrossRef]
- Anouncia, S.M.; Gohel, H.A.; Subbiah, V. Data Visualization: Trends and Challenges Toward Multidisciplinary Perception; 1st ed.; 2020; ISBN 978-981-15-2281-9.
- Schmidt, J. Visual Data Science. In Data Science, Data Visualization, and Digital Twins; Shirowzhan, S., Ed.; IntechOpen: Rijeka, 2022 ISBN 978-1-83962-944-0.
- Vuckovic, M.; Schmidt, J.; Ortner, T.; Cornel, D. Combining 2D and 3D Visualization with Visual Analytics in the Environmental Domain. Information 2022, 13(1). [CrossRef]
- Fisher, B.D. Visual Representations and Interactions Technologies. In Illuminating the Path: A Research and Development Agenda for Visual Analytics; Thomas, J., Cook, K., Eds.; IEEE Press, 2005; pp. 69–104.
- Amini, F.; Rufiange, S.; Hossain, Z.; Ventura, Q.; Irani, P.; McGuffin, M.J. The Impact of Interactivity on Comprehending 2D and 3D Visualizations of Movement Data. IEEE Trans. Vis. Comput. Graph. Zv 2015, 21, 122–135. [Google Scholar] [CrossRef]
- Elmqvist, N.; Tsigas, P. A Taxonomy of 3d Occlusion Management for Visualization. IEEE Trans. Vis. Comput. Graph. 2008, 14, 1095–1109. [Google Scholar] [CrossRef] [PubMed]
- Bleisch, S.; Nebiker, S. Connected 2D and 3D Visualizations for the Interactive Exploration of Spatial Information. In Proceedings of the The International Archives of Photogrammetry, Remote Sensing and Spatial Information Science; Beijing, China, 2008; Vol. XXXVII, Part B2.
- Hadany, R.; Harel, D. A Multi-Scale Algorithm for Drawing Graphs Nicely. Discrete Appl. Math. 2001, 113, 3–21. [Google Scholar] [CrossRef]
- Harel, D.; Koren, Y. A Fast Multi-Scale Method for Drawing Large Graphs. In Proceedings of the Lecture Notes in Computer Science; Marks, J., Ed.; Springer: Berlin, Heidelberg, 2002; pp. 179–200. [Google Scholar]
- Walshaw, C. A Multilevel Algorithm for Force-Directed Graph Drawing. In Proceedings of the Journal of Graph Algorithms and Applications; Marks, J., Ed.; Springer: Berlin, Heidelberg, 2001; Volume 1984, pp. 171–182. [Google Scholar]
- Gajer, P.; Goodrich, M.T.; Kobourov, S.G. A Fast MultiDimensional Algorithm for Drawing Large Graphs? Proc. 8th Int. Symp. Graph Draw. 2000, 211–221. [Google Scholar]
- Unity Technologies Unity Engine. Available online: https://unity.com/products/unity-engine (accessed on 17 April 2024).
- Unity Technologies Unity Manual: Joints. Available online: https://docs.unity3d.com/2023.2/Documentation/Manual/joints-section.html (accessed on 17 April 2024).
- Bastian, M.; Heymann, S.; Jacomy, M. Gephi: An Open Source Software for Exploring and Manipulating Networks. In Proceedings of the Third International AAAI Conference on Weblogs and Social Media; 2009; Vol. 3, pp. 361–362.
- Kaggle. Available online: https://www.kaggle.com (accessed on 17 April 2017).
- Takac, L.; Zabovsky, M. Data Analysis in Public Social Networks. In Proceedings of the International Scientific Conference & International Workshop Present Day Trends of Innovations; Lomza, Poland, 2012.
- Leskovec, J. Stanford Network Analysis Project. Available online: http://snap.stanford.edu (accessed on 17 April 2024).
- Marchetti, M.M. Game_of_thrones_dataset. Available online: https://www.kaggle.com/datasets/mmmarchetti/game-of-thrones-dataset (accessed on 17 April 2024).
- Sadasivan, A. Witcher Network. Available online: https://www.kaggle.com/datasets/avasadasivan/witcher-network (accessed on 17 April 2024).
- Lazega, E. Lazega Lawyers Network Data 2001, Cit. 1.
- Lazega, E. The Collegial Phenomenon: The Social Mechanisms of Cooperation Among Peers in a Corporate Law Partnership; Oxford University Press: Oxford, 2001. [Google Scholar]
- Newman, M.E.J. Finding Community Structure in Networks Using the Eigenvectors of Matrices. Phys. Rev. E 2006, 74. [Google Scholar] [CrossRef]
- Newman, M.E.J. Coauthorships in Network Science. Available online: https://github.com/gephi/gephi/wiki/Datasets (accessed on 17 April 2024).
- Takac, L.; Zabovsky, M. Pokec Social Network.
- Brezani, A.; Zabovsky, M. 3D Graph Visualization Performance Using Physical Engine. Int. J. Inf. Technol. Eng. Manag. Sci. 2022, 6. [Google Scholar]
- Jacomy, M.; Venturini, T.; Heymann, S.; Bastian, M. ForceAtlas2, a Continuous Graph Layout Algorithm for Handy Network Visualization Designed for the Gephi Software. PLOS ONE 2014, 9. [Google Scholar] [CrossRef]




| Dataset name | Description | Number of vertices / edges |
|---|---|---|
| Game of Thrones | Character relationships | 796 / 3909 |
| Witcher | Fantasy novel series | 224 / 2600 |
| Lazega | A network of relationships | 36 / 115 |
| Network Science | Network of co-authors | 1589 / 2742 |
| Pokec 1000* | Social network data | 1000 / 6297 |
| Dataset name | Avg. vertex distance |
Avg. clusters density |
Avg. clusters distance |
|---|---|---|---|
| Game of Thrones | 348.98 | 28.65 | 69.67 |
| Witcher | 668.68 | 27.95 | 66.71 |
| Lazega | 22.01 | 3.84 | 26.66 |
| Network Science | 166.01 | 26.89 | 80.96 |
| Pokec 1000 | 352.01 | 26.74 | 72.03 |
| Dataset name | Avg. vertex distance |
Avg. clusters density |
Avg. clusters distance |
|---|---|---|---|
| Game of Thrones | 100.22 | 7.14 | 18.86 |
| Witcher | 228.06 | 11.70 | 17.23 |
| Lazega | 20.17 | 2.41 | 6.42 |
| Network Science | 28.66 | 5.47 | 15.09 |
| Pokec 1000 | 113.23 | 15.17 | 60.68 |
| Dataset name | Avg. vertex distance |
Avg. clusters density |
Avg. clusters distance |
|---|---|---|---|
| Game of Thrones | 230.41 | 11.32 | 46.25 |
| Witcher | 378.91 | 16.43 | 42.34 |
| Lazega | 73.96 | 4.86 | 12.63 |
| Network Science | 92.57 | 6.04 | 29.33 |
| Pokec 1000 | 310.08 | 14.33 | 55.17 |
| Dataset name | Algorithm | Avg. vertex distance | Avg, clusters density | Avg. clusters distance |
|---|---|---|---|---|
| Game of Thrones | Spring | 348.98 | 28.65 | 69.67 |
| Force-directed | 100.22 | 7.41 | 18.86 | |
| Force-directed SCP* | 230.41 | 11.32 | 46.25 | |
| Witcher | Spring | 668.68 | 27.95 | 66.71 |
| Force-directed | 228.06 | 11.70 | 17.23 | |
| Force-directed SCP* | 378.91 | 16.43 | 42.34 | |
| Lazega | Spring | 22.01 | 3.84 | 26.66 |
| Force-directed | 20.17 | 2.41 | 6.42 | |
| Force-directed SCP* | 73.96 | 4.86 | 12.63 | |
| Network Science | Spring | 166.01 | 26.89 | 80.96 |
| Force-directed | 28.66 | 5.47 | 15.09 | |
| Force-directed SCP* | 92.57 | 6.04 | 29.33 | |
| Spring | 352.01 | 26.74 | 72.03 | |
| Pokec 1000 | Force-directed | 113.23 | 15.17 | 60.68 |
| Force-directed SCP* | 310.08 | 14.33 | 55.17 |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2024 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).