我有一个名为df_sort的熊猫数据框,具有以下结构,
结构:
Topic Links Topic_method_1
ML Data Mining 1
ML Data Analysis 1
ML ggplot2 2
ML R 3
ML python 3
问题:
我想为我的数据框创建网络图,并通过“ Topic_method_1”列的值为节点着色
到目前为止尝试:
import networkx as nx
import matplotlib.pyplot as plt
# Build your graph
G=nx.from_pandas_edgelist(df_sort, 'Topic', 'Links')
# Plot it
nx.draw(G, with_labels=True)
plt.show()
问题:
如何为节点添加颜色?我看到文档中有一个node_attribute。
答案 0 :(得分:0)
所以我发现了错误,技巧是知道'node_color'需要n + 1个大小的数组。其中n是行数。
import networkx as nx
import matplotlib.pyplot as plt
import numpy as np
# Build your graph
G=nx.from_pandas_edgelist(df_sort, 'Topic', 'Links')
cbbPalette = ["#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2"]
values = np.where(df_sort['Topic_method_1']==0, cbbPalette[0],
np.where(df_sort['Topic_method_1']==1, cbbPalette[1],
np.where(df_sort['Topic_method_1']==2, cbbPalette[2], cbbPalette[3])))
values = np.append(values,cbbPalette[4])
# Plot it
nx.draw(G, with_labels=True, node_color = values)
plt.show()