【发布时间】:2014-03-27 06:26:09
【问题描述】:
我从给定节点创建最短路径的弹簧布局网络。在这种情况下firm1。我想为每个分离度使用不同的颜色。例如,连接firm1 和其他公司的所有第一条边,比如firm2 和firm3,我想更改firm2 和firm3 的节点颜色(两者颜色相同)。然后所有从firm2 和firm3 连接的公司,比如说firm4 和firm5 我想改变他们的节点颜色。但我不知道如何更改从firm1 开始的每个分离度的节点颜色。这是我的代码:
import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
graph = nx.Graph()
with open('C:\\file.txt') as f: #Here, I load a text file with two columns indicating the connections between each firm
for line in f:
tic_1, tic_2 = line.split()
graph.add_edge(tic_1, tic_2)
paths_from_1 = nx.shortest_path(graph, "firm1") #I get the shortest path starting from firm1
x = pd.DataFrame(paths_from_1.values()) #I convert the dictionary of the shortest path into a dataframe
tic_0=x[0].tolist() #there are 7 columns in my dataframe x and I convert each columns into a list. tic_0 is a list of `firm1` string
tic_1=x[1].tolist() #tic_1 is list of all the firms directly connected to firm1
tic_2=x[2].tolist() #tic_2 are the firms indirectly connected to firm1 via the firms in tic_1
tic_3=x[3].tolist() #and so on...
tic_4=x[4].tolist()
tic_5=x[5].tolist()
tic_6=x[6].tolist()
l = len(tic_0)
graph = nx.Graph()
for i in range(len(tic_0)):
graph.add_edge(tic_0[i], tic_1[i])
graph.add_edge(tic_1[i], tic_2[i])
graph.add_edge(tic_2[i], tic_3[i])
graph.add_edge(tic_3[i], tic_4[i])
graph.add_edge(tic_4[i], tic_5[i])
graph.add_edge(tic_5[i], tic_6[i])
pos = nx.spring_layout(graph_short, iterations=200, k=)
nx.draw(graph_short, pos, font_size='6',)
plt.savefig("network.png")
plt.show()
如何为每个分离度设置不同的颜色节点?换句话说,tic_1 中的所有公司都应该有一个蓝色的节点,tic_2 中的所有公司都有一个黄色的节点颜色,等等。
【问题讨论】: