visualization of movie_graph does not work. actor_graph is the same

This commit is contained in:
Luca Lombardo
2022-03-06 23:15:05 +01:00
parent 3d4506a767
commit 74cdcf91b4
11 changed files with 217 additions and 1 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 957 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 KiB

+61
View File
@@ -0,0 +1,61 @@
#!/usr/bin/env python3
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('html-files/imdb-graph.html')
+80
View File
@@ -0,0 +1,80 @@
#!/usr/bin/env python3
from itertools import combinations
from math import comb
from matplotlib.pyplot import title
import networkx as nx
from pyvis.network import Network
net = Network(height='100%', width='100%', directed=False, bgcolor='#1e1f29', font_color='white')
actors_to_keep = []
farness_to_keep= []
with open('data/top_actors_c.txt') as ifs:
for line in ifs:
if line.strip():
actor_id, farness = line.split(maxsplit=1)
actors_to_keep.append(int(actor_id))
farness_to_keep.append(float(farness))
with open('data/Attori.txt') as ifs:
for line in ifs:
if line.strip():
actor_id, actor_name = line.split(maxsplit=1)
actor_id = int(actor_id)
farness = float(farness)
if actor_id in actors_to_keep:
if farness in farness_to_keep:
net.add_node(actor_id, label=actor_name, size =pow(5,1.0/(farness*2)))
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 = {
"nodes": {
"borderWidthSelected": 3
},
"edges": {
"color": {
"inherit": true
},
"smooth": false
},
"physics": {
"repulsion": {
"centralGravity": 8.95,
"springLength": 500,
"springConstant": 0.015,
"nodeDistance": 600,
"damping": 0.67
},
"minVelocity": 0.75,
"solver": "repulsion"
}
}
""")
net.show('html-files/closeness-graph.html')
+75
View File
@@ -0,0 +1,75 @@
#!/usr/bin/env python3
from itertools import combinations
from math import comb
from matplotlib.pyplot import title
import networkx as nx
from pyvis.network import Network
net = Network(height='100%', width='100%', directed=False, bgcolor='#1e1f29', font_color='white')
actors_to_keep = []
harmonic_to_keep =[]
with open('data/top_actors_h.txt') as ifs:
for line in ifs:
if line.strip():
actor_id, harmonic = line.split(maxsplit=1)
actors_to_keep.append(int(actor_id))
harmonic_to_keep.append(float(harmonic))
with open('data/Attori.txt') as ifs:
for line in ifs:
if line.strip():
actor_id, actor_name = line.split(maxsplit=1)
actor_id = int(actor_id)
harmonic = float(harmonic)
if actor_id in actors_to_keep:
if harmonic in harmonic_to_keep:
net.add_node(actor_id, label=actor_name, size = harmonic/350)
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": {
"springLength": 1205,
"nodeDistance": 1190
},
"maxVelocity": 23,
"minVelocity": 0.75,
"solver": "repulsion"
}
}
""")
net.show('html-files/harmonic-graph.html')
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long