Python 为networkx中的特定节点着色

Python 为networkx中的特定节点着色,python,matplotlib,networkx,Python,Matplotlib,Networkx,我想在networkx中绘制一个图形。一切都很好,但我认为为特定节点着色会很有用。我该怎么做 我已经看到,这可以通过使用命令来完成 draw_networkx_nodes(G, pos, nodelist=None, node_size=300, node_color='r', node_shape='o', alpha=1.0, cmap=None, vmin=None, vmax=None, ax=None, linewidths=None, label=None, **kwds) 通过将

我想在networkx中绘制一个图形。一切都很好,但我认为为特定节点着色会很有用。我该怎么做

我已经看到,这可以通过使用命令来完成

draw_networkx_nodes(G, pos, nodelist=None, node_size=300, node_color='r', node_shape='o', alpha=1.0, cmap=None, vmin=None, vmax=None, ax=None, linewidths=None, label=None, **kwds)
通过将颜色和cmap关键字设置为正确的值。但到目前为止,我看到的所有示例都使用了
cmap=plt.get\u cmap(一些字符串)
,这是一个标准函数,对我来说似乎没有帮助

为了澄清:我有几个节点列表,我想用相同的颜色给列表中的所有节点上色

您可以根据节点提供的颜色分组绘制节点。对于绘制的每个组,只需将
node\u color
指定为所需的颜色即可

import networkx as nx

G = nx.cubical_graph()
pos = nx.spring_layout(G)

nodes = {
    'r': [1, 3, 5],
    'b': [0, 2],
    'g': [4]
}
for node_color, nodelist in nodes.items():
    nx.draw_networkx_nodes(G, pos, nodelist=nodelist, node_color=node_color)

labels = {x: x for x in G.nodes}
nx.draw_networkx_labels(G, pos, labels, font_size=16, font_color='w')

AFAIK,仅当您将
node\u color
设置为某个数值时,指定
cmap
才有效。如果只想更改所有节点的打印颜色,则只需为
节点\u color
传递不同的字符串参数即可。可以找到可用的命名颜色。