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 @@ + + + + +
+

+
+ + + + + + + + +
+ +
+
+
0%
+
+
+
+
+
+ + + + + \ 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')