【问题标题】:How to set colors for nodes in NetworkX?如何为 NetworkX 中的节点设置颜色?
【发布时间】:2015-01-17 18:37:00
【问题描述】:

我创建了图表,到目前为止一切都很好,但我想在创建后更新节点的颜色。

我的目标是可视化 DFS,我将首先显示初始图形,然后随着 DFS 解决问题逐步为节点着色。

如果有人感兴趣,可以在Github获取示例代码

【问题讨论】:

    标签: python networkx


    【解决方案1】:

    您所需要的只是指定一个颜色映射,它将颜色映射到每个节点并将其发送到 nx.draw 函数。澄清一下,对于一个 20 个节点,我想将前 10 个节点涂成蓝色,其余的涂成绿色。代码如下:

    G = nx.erdos_renyi_graph(20, 0.1)
    color_map = []
    for node in G:
        if node < 10:
            color_map.append('blue')
        else: 
            color_map.append('green')      
    nx.draw(G, node_color=color_map, with_labels=True)
    plt.show()
    

    您将在附图中找到图表

    【讨论】:

    • 我们如何处理重复项?如果有重复,那么它们会自动从图表中删除,但值会不断添加到 color_map。
    • 我发布了一个关于从 Pandas 数据框创建 NetworkX 有向图的答案 (stackoverflow.com/a/59473049/1904943),节点根据数据框列着色。
    • 您是指节点 ID?没关系,还是可以的
    • 我在这里尝试使用相同的方法,但由于我的某些边缘是双向的,我收到此错误消息:ValueError: 'c' argument has 105 elements,这与'x' 和 'y' 大小为 66。networkx 中是否有任何解决方法?
    【解决方案2】:

    参考node_color参数:

    nx.draw_networkx_nodes(G, pos, node_size=200, node_color='#00b4d9')
    

    【讨论】:

      【解决方案3】:

      之前已经回答过,但你也可以这样做:

      # define color map. user_node = red, book_nodes = green
      color_map = ['red' if node == user_id else 'green' for node in G]        
      graph = nx.draw_networkx(G,pos, node_color=color_map) # node lables
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-11
        • 2023-04-07
        • 1970-01-01
        相关资源
        最近更新 更多