我正在编写一个算法来表示回归树,使用pydot模块(Graphviz的Dot语言的接口)。 在算法中,制作边缘和节点列表,然后表示它们 - 工作正常。
但是在某些特定情况下,我需要删除一些边缘和节点,这就是我被卡住的地方。以下是代码的一部分:
import pydot
graph = pydot.Dot(graph_type='graph')
link4 = pydot.Edge(node10, node21, label=etiquetas[3])
link5 = pydot.Edge(node11, node22, label=etiquetas[4])
lista_links = [link4, link5]
# if some conditions are verified, then:
lista_links.remove(link5)
for link in lista_links:
graph.add_edge(link)
graph.write_png('teste.png')
我希望这段代码可以毫无问题地工作,但我收到错误,说:
AttributeError: 'NoneType' object has no attribute 'get_top_graph_type'
我唯一的想法是,在定义所有特定情况后,更改代码并仅添加节点和边缘,而不是在某些特定情况下删除节点和边缘。但那将是更多的工作......(代码比我向你展示的要大得多,我有几个需要考虑的特定情况)。
我很好奇为什么python表现得像这样...... 有人可以向我解释一下,或者让我知道如何改变这种行为?
提前致谢, 卡拉
答案 0 :(得分:1)
在表面上,似乎问题出现在没有父图的边缘或节点中。因此,整体解决方案将是:不允许节点和边缘挂起,始终将它们附加到图形,然后根据需要从图形中删除。