import networkx as nx
import json

in_file = open("myfile.json", "r")
js_file = json.load(in_file)
in_file.close()
firm_network = nx.adjacency_graph(js_file)

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = 'SimHei'
pos = nx.nx_agraph.graphviz_layout(firm_network, prog="twopi", args="")
node_label = nx.get_node_attributes(firm_network, 'Name')
# print(node_label)
node_degree = dict(firm_network.out_degree())
node_label = {
    key: f"{node_label[key]} {node_degree[key]}"
    for key in node_label.keys()
}
node_size = list(nx.get_node_attributes(firm_network, 'Revenue_Log').values())
node_size = list(map(lambda x: x**2, node_size))
edge_label = nx.get_edge_attributes(firm_network, "Product")
# multi(di)graphs, the keys are 3-tuples
edge_label = {(n1, n2): label for (n1, n2, _), label in edge_label.items()}
plt.figure(figsize=(12, 12), dpi=300)
nx.draw(firm_network, pos, node_size=node_size, labels=node_label, font_size=6)
nx.draw_networkx_edge_labels(firm_network, pos, edge_label, font_size=4)
plt.savefig("network1.png")
