diff --git a/.gitignore b/.gitignore
index 4c4b11f..0a61c42 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@ grafo
.vscode/
kenobi
*.gz
+
diff --git a/visualization/imdb-graph.html b/visualization/imdb-graph.html
new file mode 100644
index 0000000..c2b2a18
--- /dev/null
+++ b/visualization/imdb-graph.html
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/visualization/visualization.py b/visualization/visualization.py
new file mode 100644
index 0000000..875f2c6
--- /dev/null
+++ b/visualization/visualization.py
@@ -0,0 +1,60 @@
+from itertools import combinations
+from math import comb
+import networkx as nx
+from pyvis.network import Network
+
+net = Network(height='100%', width='100%', directed=False, bgcolor='#1e1f29', font_color='white')
+with open('data/Attori.txt') as ifs:
+ for line in ifs:
+ if line.strip():
+ actor_id, actor_name = line.split(maxsplit=1)
+ net.add_node(int(actor_id), label=actor_name)
+
+movies = {} # {movie_id: [actor_id, ...]}
+with open('data/Relazioni.txt') as ifs:
+ for line in ifs:
+ if line.strip():
+ movie_id, actor_id = line.split(maxsplit=1)
+ actor_id = int(actor_id)
+ movie_id = int(movie_id)
+ if actor_id not in net.node_ids:
+ continue
+ if movie_id in movies:
+ movies[movie_id].append(actor_id)
+ else:
+ movies[movie_id] = [actor_id]
+
+edges = set() # set of unique tuples (actor_id, actor_id)
+for movie_id, actors in movies.items():
+ actors.sort()
+ for actor_id_1, actor_id_2 in combinations(actors, 2):
+ edges.add((actor_id_1, actor_id_2))
+for actor_id_1, actor_id_2 in edges:
+ net.add_edge(actor_id_1, actor_id_2)
+
+# net.hrepulsion(node_distance=500, central_gravity=0.3, spring_length=500, spring_strength=0.05, damping=0.2)
+# net.repulsion(node_distance=500, central_gravity=0.3, spring_length=200, spring_strength=0.05, damping=0.2)
+# net.show_buttons()
+
+net.set_options(""""
+var options = {
+ "edges": {
+ "color": {
+ "inherit": true
+ },
+ "smooth": false
+ },
+ "physics": {
+ "repulsion": {
+ "centralGravity": 0.25,
+ "nodeDistance": 500,
+ "damping": 0.67
+ },
+ "maxVelocity": 48,
+ "minVelocity": 0.39,
+ "solver": "repulsion"
+ }
+}
+""")
+
+net.show('imdb-graph.html')