【问题标题】:Networkx: how to draw coloured edges?Networkx:如何绘制彩色边缘?
【发布时间】:2013-05-14 21:12:01
【问题描述】:

我使用以下代码构建了一个图表:

G = networkx.Graph()
G.add_edges_from([list(e) for e in P + Q + R])    
colors = "bgrcmyk"
color_map = [colors[i] for i in range(n/2)]

# add colors
for i in range(len(P)):
    edge = list(P[i])
    G[edge[0]][edge[1]]['edge_color'] = color_map[i]

for i in range(len(P)):
    edge = list(Q[perms[0][i]])
    G[edge[0]][edge[1]]["color"] = color_map[perms[0][i]]

for i in range(len(P)):
    edge = list(R[perms[1][i]])
    G[edge[0]][edge[1]]["color"] = color_map[perms[1][i]]

然后我使用:

networkx.draw(G)
matplotlib.pyplot.show()

它显示得很好,除了所有边缘都用黑色而不是我在上面的 sn-p 中尝试分配的颜色。有什么想法吗?

【问题讨论】:

  • 嘿!我想我正在尝试做与您所做的类似的事情。你的目标是用不同的颜色给边缘上色,对吧?我也想这样做。您的 P、Q 和 R 对应的是什么?谢谢!
  • P、Q 和 R 是 {1,2, ...,n} 的分区,分成大小为 2 的部分。您可以在此处找到有关我尝试执行的操作的更多详细信息:@987654321 @

标签: python networkx


【解决方案1】:

您可以在不循环绘制边缘的情况下做到这一点。对于较大的图形,它会更快。

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
# example graph 
for color in "bgrcmyk":
    G.add_edge('s'+color,'t'+color, color=color)

# edge_color_attr = nx.get_edge_attributes(G,'color')
# edges = edge_color_attr.keys()
# colors = edge_color_attr.values()
edges,colors = zip(*nx.get_edge_attributes(G,'color').items())
nx.draw(G,edgelist=edges,edge_color=colors,width=10)
plt.show()

【讨论】:

    【解决方案2】:

    嗯,终于找到我需要做的了。颜色显然需要分开,网络需要用draw_networkx 绘制。所以上面三个for循环要换成:

    pos=networkx.spring_layout(G)
    for i in range(len(P)):
        networkx.draw_networkx_edges(G,pos,
                    edgelist=[list(P[i]), list(Q[perms[0][i]]), list(R[perms[1][i]])],edge_color=color_map[i], width="8")
    

    【讨论】:

      【解决方案3】:

      文档字符串显示:

      edge_color : 颜色字符串,或浮点数组 边缘颜色。可以是单一颜色格式字符串(默认='r'), 或与 edgelist 长度相同的颜色序列。 如果指定了数值,它们将被映射到 颜色使用 edge_cmap 和 edge_vmin,edge_vmax 参数。

      【讨论】:

        猜你喜欢
        • 2012-10-24
        • 2015-03-06
        • 2021-06-03
        • 1970-01-01
        • 1970-01-01
        • 2015-12-30
        • 2021-07-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多