我有以下代码可以绘制带有节点的图形,但未能添加正确的图例: (抱歉,我无法发布图片,似乎我没有足够的声誉)
我想要一个4种颜色的图例,比如“浅蓝色=废弃,红色=草稿,黄色=真实,深蓝色=初始”。
我见过一些“分散”的解决方案,但我认为它太复杂了。用plt.legend(G.nodes)
有办法吗?
代码如下:
import networkx as nx
import matplotlib.pyplot as plt
import numpy as np
G=nx.Graph()
G.add_node("kind1")
G.add_node("kind2")
G.add_node("Obsolete")
G.add_node("Draft")
G.add_node("Release")
G.add_node("Initialisation")
val_map = {'kind1': 2,'kind2': 2,'Obsolete': 2,'Initialisation': 1,'Draft': 4,'Release': 3}
values = [val_map.get(node, 0) for node in G.nodes()]
nodes = nx.draw(G, cmap = plt.get_cmap('jet'), node_color = values)
plt.legend(G.nodes())
plt.show()
非常感谢你的帮助,但这并不是我想要的。我做了一些更改,所以颜色图例的名称与节点的名称不同。
以下是最终代码:
在使用nx.draw时似乎有某种错误。尝试改用nx.draw_networkx。 然后使用matplotlib中的轴在绘制图形时传递它。在(0,0)中绘制点时,该轴应包含节点的标签和颜色-->;这是比较棘手的部分。
希望有帮助!这是我运行的代码:
一些有用的来源:
[1]http://pydoc.net/Python/networkx/1.0.1/networkx.drawing.nx_pylab/
[2]http://matplotlib.org/api/legend_api.html
[3]Using Colormaps to set color of line in matplotlib
[4]http://matplotlib.org/1.3.1/users/artists.html
相关问题 更多 >
编程相关推荐