使用 csv 文件作为共现矩阵使用 networkx 绘制图形
Plotting a graph with neworkx using a csv file as co-occurence matrix
我使用 sklearn CountVectorizer 制作了一个共现矩阵并将其保存为 csv 文件。假设它看起来像这样:
Unnamed: 0 a b c d
0 a 0 1 0 0
1 b 2 0 1 0
2 c 0 1 0 3
3 d 0 0 1 0
使用此数据框作为共现矩阵绘制共现网络的最简单方法是什么?
正如@ALollz 在评论中提到的,您可以使用 G=nx.from_pandas_adjacency(df)
从 pandas 数据框创建一个图表,然后使用 pyvis.network
将其可视化,如下所示:
import pandas as pd
import numpy as np
import networkx as nx
from pyvis.network import Network
# creating a dummy adjacency matrix of shape 20x20 with random values of 0 to 3
adj_mat = np.random.randint(0, 3, size=(20, 20))
np.fill_diagonal(adj_mat, 0) # setting the diagonal values as 0
df = pd.DataFrame(adj_mat)
# create a graph from your dataframe
G = nx.from_pandas_adjacency(df)
# visualize it with pyvis
N = Network(height='100%', width='100%', bgcolor='#222222', font_color='white')
N.barnes_hut()
for n in G.nodes:
N.add_node(int(n))
for e in G.edges:
N.add_edge(int(e[0]), int(e[1]))
N.write_html('./coocc-graph.html')
我使用 sklearn CountVectorizer 制作了一个共现矩阵并将其保存为 csv 文件。假设它看起来像这样:
Unnamed: 0 a b c d
0 a 0 1 0 0
1 b 2 0 1 0
2 c 0 1 0 3
3 d 0 0 1 0
使用此数据框作为共现矩阵绘制共现网络的最简单方法是什么?
正如@ALollz 在评论中提到的,您可以使用 G=nx.from_pandas_adjacency(df)
从 pandas 数据框创建一个图表,然后使用 pyvis.network
将其可视化,如下所示:
import pandas as pd
import numpy as np
import networkx as nx
from pyvis.network import Network
# creating a dummy adjacency matrix of shape 20x20 with random values of 0 to 3
adj_mat = np.random.randint(0, 3, size=(20, 20))
np.fill_diagonal(adj_mat, 0) # setting the diagonal values as 0
df = pd.DataFrame(adj_mat)
# create a graph from your dataframe
G = nx.from_pandas_adjacency(df)
# visualize it with pyvis
N = Network(height='100%', width='100%', bgcolor='#222222', font_color='white')
N.barnes_hut()
for n in G.nodes:
N.add_node(int(n))
for e in G.edges:
N.add_edge(int(e[0]), int(e[1]))
N.write_html('./coocc-graph.html')