|
import networkx as nx |
|
import matplotlib.pyplot as plt |
|
from pyvis.network import Network |
|
import pandas as pd |
|
import streamlit as st |
|
|
|
|
|
def got_func(physics): |
|
got_net = Network(height="600px", width="100%", font_color="black",heading='Game of Thrones Graph') |
|
|
|
|
|
got_net.barnes_hut() |
|
got_data = pd.read_csv("stormofswords.csv") |
|
|
|
|
|
sources = got_data['Source'] |
|
targets = got_data['Target'] |
|
weights = got_data['Weight'] |
|
|
|
edge_data = zip(sources, targets, weights) |
|
|
|
for e in edge_data: |
|
src = e[0] |
|
dst = e[1] |
|
w = e[2] |
|
|
|
got_net.add_node(src, src, title=src) |
|
got_net.add_node(dst, dst, title=dst) |
|
got_net.add_edge(src, dst, value=w) |
|
|
|
neighbor_map = got_net.get_adj_list() |
|
|
|
|
|
for node in got_net.nodes: |
|
node["title"] += " Neighbors:<br>" + "<br>".join(neighbor_map[node["id"]]) |
|
node["value"] = len(neighbor_map[node["id"]]) |
|
if physics: |
|
got_net.show_buttons(filter_=['physics']) |
|
got_net.show("gameofthrones.html") |
|
|
|
|
|
def simple_func(physics): |
|
nx_graph = nx.cycle_graph(10) |
|
nx_graph.nodes[1]['title'] = 'Number 1' |
|
nx_graph.nodes[1]['group'] = 1 |
|
nx_graph.nodes[3]['title'] = 'I belong to a different group!' |
|
nx_graph.nodes[3]['group'] = 10 |
|
nx_graph.add_node(20, size=20, title='couple', group=2) |
|
nx_graph.add_node(21, size=15, title='couple', group=2) |
|
nx_graph.add_edge(20, 21, weight=5) |
|
nx_graph.add_node(25, size=25, label='lonely', title='lonely node', group=3) |
|
|
|
|
|
nt = Network("500px", "500px",notebook=True,heading='') |
|
nt.from_nx(nx_graph) |
|
|
|
if physics: |
|
nt.show_buttons(filter_=['physics']) |
|
nt.show('test.html') |
|
|
|
|
|
def karate_func(physics): |
|
G = nx.karate_club_graph() |
|
|
|
|
|
nt = Network("500px", "500px",notebook=True,heading='Zachary’s Karate Club graph') |
|
nt.from_nx(G) |
|
|
|
if physics: |
|
nt.show_buttons(filter_=['physics']) |
|
nt.show('karate.html') |