29 lines
805 B
Python
29 lines
805 B
Python
|
# %%
|
||
|
import pandas as pd
|
||
|
import networkx as nx
|
||
|
import matplotlib.pyplot as plt
|
||
|
|
||
|
plt.rcParams['font.sans-serif'] = 'SimHei'
|
||
|
|
||
|
BomNodes = pd.read_csv('BomNodes.csv', index_col=0)
|
||
|
BomNodes.set_index('Code', inplace=True)
|
||
|
BomCateNet = pd.read_csv('BomCateNet.csv', index_col=0)
|
||
|
BomCateNet.fillna(0, inplace=True)
|
||
|
|
||
|
G = nx.from_pandas_adjacency(BomCateNet, create_using=nx.MultiDiGraph())
|
||
|
|
||
|
labels_dict = {}
|
||
|
for code in G.nodes:
|
||
|
labels_dict[code] = BomNodes.loc[code].to_dict()
|
||
|
nx.set_node_attributes(G, labels_dict)
|
||
|
|
||
|
pos = nx.nx_agraph.graphviz_layout(G, prog="twopi", args="")
|
||
|
node_labels = nx.get_node_attributes(G, 'Name')
|
||
|
plt.figure(figsize=(12, 12), dpi=300)
|
||
|
nx.draw_networkx_nodes(G, pos)
|
||
|
nx.draw_networkx_edges(G, pos)
|
||
|
nx.draw_networkx_labels(G, pos, labels=node_labels, font_size=6)
|
||
|
plt.show()
|
||
|
|
||
|
# %%
|