为图中的节点列表分配两种不同的颜色

Assigning two separate colours for a list of nodes in a graph

我想显示一个图表,其中包含我拥有的每组节点的两种不同颜色。

我试图定义一个函数来将每个节点颜色分配给列表中的一个节点,但是 python 似乎无法识别我的列表之一,因此最终打印了我的所有节点相同的颜色。我觉得我缺少一些非常基本的东西,但我看不到它。

编辑:Nodelist1 本质上是一个节点序列,表示两个节点之间的路径。 Nodelist1 中的所有数字都在 Graph.nodes()

Nodelist1=[1,2,7,9,13] 
def nodecolor():
    for n in Graph.nodes():
        if n in list(NodeList1):
            node_color='red'
        else:
            node_color='blue'
    return node_color

nx.draw_networkx(Graph, node_color=nodecolor(), edge_color='red' )

理想情况下,这应该绘制一个显示两种不同颜色的图形。但是它只显示蓝色。

您似乎将单个字符串分配给 node_color 变量,而不是例如列表。由于 nodecolor() 函数 returns 单个字符串,draw_networkx 接收单一颜色来绘制图形。

如果您查看文档 here,您可以看到您可以将字符串序列提供给 draw_networkxnode_color 参数,但序列的长度应等于节点列表。

虽然我对您正在使用的特定库没有经验,但我相信按如下所示对您的函数 nodecolor() 进行简单修改就可以了。

def nodecolor():
    node_colors = []
    for n in Graph.nodes():
        if n in list(NodeList1):
            node_colors.append('red')
        else:
            node_colors.append('blue')
    return node_colors