【问题标题】:Assertion error while drawing graph with pydot使用 pydot 绘制图形时出现断言错误
【发布时间】:2021-10-09 08:44:14
【问题描述】:

我刚开始使用 pydot 创建图表。我刚刚创建了一个节点,但是在尝试使用 jupyter notebook 显示图形时,我遇到了问题。 这是我的代码:

import pydot
import os
from IPython.display import Image, display
G= pydot.Dot(graph_type='digraph')
node = pydot.Node("S'->.S\nS->.(L)/.a")
G.add_node(node)
im = Image(G.create_png())
display(im)

以下是我的错误

"dot" with args ['-Tpng', 'C:\\Users\\MAYANK~1\\AppData\\Local\\Temp\\tmptw6hrboj'] returned code: 1

stdout, stderr:
 b''
b"'C:\\Users\\Mayank' is not recognized as an internal or external command,\r\noperable program or batch file.\r\n"

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-10-fb336e9303b4> in <module>
      5 node = pydot.Node("S'->.S\nS->.(L)/.a")
      6 G.add_node(node)
----> 7 im = Image(G.create_png())
      8 display(im)

~\anaconda3\lib\site-packages\pydot.py in new_method(f, prog, encoding)
   1721                 """Refer to docstring of method `create`."""
   1722                 return self.create(
-> 1723                     format=f, prog=prog, encoding=encoding)
   1724             name = 'create_{fmt}'.format(fmt=frmt)
   1725             self.__setattr__(name, new_method)

~\anaconda3\lib\site-packages\pydot.py in create(self, prog, format, encoding)
   1943             print(message)
   1944 
-> 1945         assert process.returncode == 0, process.returncode
   1946 
   1947         return stdout_data

AssertionError: 1

请帮我清除这个错误!!

【问题讨论】:

  • 您设法解决了这个问题吗?我遇到了同样的问题
  • 不,我无法解决这个错误。所以我最终转向使用 digraph 库。我可以使用 digraph 完成相同的任务,而且它比 pydot 相对容易。

标签: python python-3.x graphviz assertion pydot


【解决方案1】:

因为名声我不能评论,但我可以说什么时候

pos = graphviz_layout(temp_nx, prog="dot")

给了我一个断言错误,那个

pos = nx.nx_agraph.pygraphviz_layout(temp_nx, prog='dot')

工作

【讨论】:

    【解决方案2】:

    我能够通过使用 nx.DiGraph 而不是 nx.Graph 来解决此问题

    import networkx as nx
    from networkx.drawing.nx_pydot import graphviz_layout
    
    G = nx.DiGraph()
    # add stuff to graph
    fig = plt.figure()
    pos = graphviz_layout(self.tree, prog='dot')
    nx.draw_networkx_nodes(self.tree, pos)
    nx.draw_networkx_edges(self.tree, pos)
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2020-08-14
      • 2020-08-17
      • 1970-01-01
      • 2012-11-03
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      相关资源
      最近更新 更多