当我使用networkx.draw
绘制网络时,使用与python2和python3相同的程序,但是python2无法正确绘制。左边是py3,右边是py2
import scipy
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
N = [("n{}".format(i), 0) for i in range(1,7)] + \
[("n{}".format(i), 1) for i in range(7,13)] + \
[("n{}".format(i), 2) for i in range(13,19)]
E = [("n1","n2"), ("n1","n3"), ("n1","n5"),
("n2","n4"),
("n3","n6"), ("n3","n9"),
("n4","n5"), ("n4","n6"), ("n4","n8"),
("n5","n14"),
("n7","n8"), ("n7","n9"), ("n7","n11"),
("n8","n10"), ("n8","n11"), ("n8", "n12"),
("n9","n10"), ("n9","n14"),
("n10","n12"),
("n11","n18"),
("n13","n15"), ("n13","n16"), ("n13","n18"),
("n14","n16"), ("n14","n18"),
("n15","n16"), ("n15","n18"),
("n17","n18")]
G = nx.Graph()
print(list(map(lambda x: x[0], N)))
G.add_nodes_from(list(map(lambda x: x[0], N)))
G.add_edges_from(E)
ncolor = ['r']*6+['g']*6+['b']*6
nsize = [700] * 6 + [700] * 6 + [700] * 6
nx.draw(G, with_labels=True, font_weight='bold',
node_color=list(ncolor), node_size=nsize)
plt.savefig("graph.png")
plt.show()
对于早于3.6的python,字典不维护插入顺序。因此,最终可能会将这些颜色指定给不同的节点。使用
nodelist
绘图时尝试强制使用节点列表:如果图形之间的差异只是颜色(以及确定的位置),则可以尝试替换
以下是:
背景
如果我没记错的话,python2中的
dict
不一定保留添加元素的顺序。因此,“n0”不需要是G
中的第一个元素。在Python3中,它们开始保留顺序,从而为所需的节点着色相关问题 更多 >
编程相关推荐