【问题标题】:How to draw the paths of a networkX graph using different colours如何使用不同颜色绘制 networkX 图的路径
【发布时间】:2015-10-01 06:17:33
【问题描述】:

我使用 python networkX 创建了一个图形,如下面的代码所示。 该图有三个路径,我想用不同的颜色绘制每条路径。 例如,我想使用红色绘制路径 1(即 [2, 1, 4, 3, 11]),使用蓝色绘制路径 2(即 [1, 0, 3, 11, 10] 和路径 3(即[10, 11, 3, 4, 1]) 使用黄色。 请问如何修改 d 代码以绘制具有指定颜色的图形?这是我第一个使用 python 和 networkX 包的程序。

import networkx as nx
import matplotlib.pyplot as plt
import random

G=nx.Graph(name="buba")
routes = [[2, 1, 4, 3, 11], [1, 0, 3, 11, 10], [10, 11, 3, 4, 1]]
edges = [ (2,1), (1,4), (4,3), (3,11), (1,0), (0,3), (11,10)]
for r in routes:
     G.add_nodes_from(r)
G.add_edges_from(edges)

print("Graph has %d nodes with %d edges" %(G.number_of_nodes(),    
G.number_of_edges()))
nx.draw_networkx(G,with_labels=True)
plt.savefig('this.png')
plt.show()

【问题讨论】:

    标签: python graph networkx


    【解决方案1】:

    此代码生成下图。由于您的路径重叠,因此我将它们绘制成不同的粗细,以便您可以看到它们。

    import networkx as nx
    import matplotlib.pyplot as plt
    import random
    
    G=nx.Graph(name="buba")
    routes = [[2, 1, 4, 3, 11], [1, 0, 3, 11, 10], [10, 11, 3, 4, 1]]
    edges = []
    for r in routes:
        route_edges = [(r[n],r[n+1]) for n in range(len(r)-1)]
        G.add_nodes_from(r)
        G.add_edges_from(route_edges)
        edges.append(route_edges)
    
    print("Graph has %d nodes with %d edges" %(G.number_of_nodes(),    
    G.number_of_edges()))
    
    pos = nx.spring_layout(G)
    nx.draw_networkx_nodes(G,pos=pos)
    nx.draw_networkx_labels(G,pos=pos)
    colors = ['r', 'b', 'y']
    linewidths = [20,10,5]
    for ctr, edgelist in enumerate(edges):
        nx.draw_networkx_edges(G,pos=pos,edgelist=edgelist,edge_color = colors[ctr], width=linewidths[ctr])
    plt.savefig('this.png')
    


    那么我从你的代码中改变了什么?

    1) 主要是我为每条路径(route_edges)创建了所有边的列表。

    2) 我还为G 中的节点定义了一组位置pos,因为我需要多次绘制,并且每次绘制时都需要确保它们在同一个位置.

    3) 要绘制边的子集,我使用了nx.draw_networkx_edges,并向其发送了要绘制的边列表。我指定了此时的颜色(以及厚度)。

    【讨论】:

    • 乔尔谢谢。这正是我想要的
    • 对不起乔。节点标签没有出现在图中。节点标签是 1 或 2 或 3 等等
    • 修复了它。如果你只是使用nx.draw_networkx 时使用的参数与使用nx.draw_networkx_nodes 时使用的参数有点不同,所以我记错了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 2022-11-13
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多