【问题标题】:Labelling a graph in python3在 python3 中标记图形
【发布时间】:2020-11-02 15:55:38
【问题描述】:

我正在尝试使用 networkx 构建一个图形,使用节点作为类对象。 我已经标记了节点,但我无法显示标记的边缘(实际上,根本不是边缘)。我期望通过在 Node 类中定义相邻节点来做到这一点。 我在下面显示我的代码:


# Packages

import random as rd
import networkx as nx
from matplotlib import pyplot as plt

# Classes

class Node:
    def __init__(self, name):
        self.name = name
        self.state = rd.choice([-1, 0, 1])
        self.neighbour = None

    def get_name(self):
        return self.name
    def get_state(self):
        return self.state
    def get_neighbour(self):
        return self.neighbour

# Nodes and neighbours

n1 = Node(1)
n2 = Node(2)
n3 = Node(3)

n1.neighbour = n2
n2.neighbour = n3

# Graph

G = nx.Graph()

G.add_node(n1.name)
G.add_node(n2.name)
G.add_node(n3.name)

pos = nx.spring_layout(G)

nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_edges(G, pos)
nx.draw_networkx_labels(G, pos)
#nx.draw_spectral(G, with_labels=True)   # I also tried this suggestion, but unsuccessfully

plt.savefig('jupyter_graph.png')

“状态”属性的原因是因为我想根据节点的状态更改节点的颜色(这是另一个问题)。 输出如下:

没有边缘出现。你能帮帮我吗?

【问题讨论】:

    标签: python python-3.x graph label edges


    【解决方案1】:

    networkx 包不会根据 Node 类中的属性创建图形。显示这些值的原因是您在使用G.add_node(n1.name) 将新节点添加到图中时传递了它们。同样,为了添加边,您需要调用add_edge 方法。请参考tutorial

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 1970-01-01
      • 2018-04-03
      • 2020-02-28
      • 2016-02-25
      • 2013-03-03
      • 1970-01-01
      • 2012-07-22
      相关资源
      最近更新 更多