NetworkX MultiDiGraph 未打印
NetworkX MultiDiGraph doesn't get printed
我正在尝试打印 NetworkX MultiDiGraph 的一个实例,如下所示:
import networkx as nx
G = nx.MultiDiGraph()
G.add_node(0)
print(G)
我的理解是,由于 G
是 class 的一个实例,即使未实现 __str__
,它也应该向字符串打印一些内容。但是,这只会打印一个空行。我还测试了这是否是一个 NoneType
对象:
isinstance(G, nx.MultiDiGraph)
这个returnsTrue
。这怎么可能?如果相关,我会将此图传递给其他一些包,该包返回与 NoneType
输入相关的错误。在此先感谢您的帮助。
Networkx 允许您命名图形,这就是您打印图形时得到的名称。例如:
import networkx as nx
G = nx.MultiDiGraph(name = 'myG')
G.add_node(0)
print(G)
> myG
名称默认为空字符串。这就是正在打印的内容。我认为从代码上看不是很明显,但是在this link处给出了Graph
class的定义。其中,__str__
定义为 return 图形名称。图名定义为
@property
def name(self):
"""String identifier of the graph.
This graph attribute appears in the attribute dict G.graph
keyed by the string `"name"`. as well as an attribute (technically
a property) `G.name`. This is entirely user controlled.
"""
return self.graph.get("name", "")
所以默认名称是一个空字符串。现在你使用了 MultiDiGraph
,所以它被隐藏了 - MultiDiGraph
建立在 DiGraph
之上,DiGraph
建立在 Graph
之上,所以隐藏在所有也就是说,如果 MultiDiGraph
没有给出名称,它默认为空字符串。
我正在尝试打印 NetworkX MultiDiGraph 的一个实例,如下所示:
import networkx as nx
G = nx.MultiDiGraph()
G.add_node(0)
print(G)
我的理解是,由于 G
是 class 的一个实例,即使未实现 __str__
,它也应该向字符串打印一些内容。但是,这只会打印一个空行。我还测试了这是否是一个 NoneType
对象:
isinstance(G, nx.MultiDiGraph)
这个returnsTrue
。这怎么可能?如果相关,我会将此图传递给其他一些包,该包返回与 NoneType
输入相关的错误。在此先感谢您的帮助。
Networkx 允许您命名图形,这就是您打印图形时得到的名称。例如:
import networkx as nx
G = nx.MultiDiGraph(name = 'myG')
G.add_node(0)
print(G)
> myG
名称默认为空字符串。这就是正在打印的内容。我认为从代码上看不是很明显,但是在this link处给出了Graph
class的定义。其中,__str__
定义为 return 图形名称。图名定义为
@property
def name(self):
"""String identifier of the graph.
This graph attribute appears in the attribute dict G.graph
keyed by the string `"name"`. as well as an attribute (technically
a property) `G.name`. This is entirely user controlled.
"""
return self.graph.get("name", "")
所以默认名称是一个空字符串。现在你使用了 MultiDiGraph
,所以它被隐藏了 - MultiDiGraph
建立在 DiGraph
之上,DiGraph
建立在 Graph
之上,所以隐藏在所有也就是说,如果 MultiDiGraph
没有给出名称,它默认为空字符串。