绘制 PGMPy Networkx 图时出现 StopIteration 错误

StopIteration error while drawing a PGMPy Networkx graph

我有一个 python 脚本,它使用 pandas 加载一个 csv 文件,然后使用 pgmpy 在数据上学习贝叶斯网络。

学习结构后,我正在使用函数绘制图形:

nx.draw(graph_model, node_color='#00b4d9', with_labels=True)

这在 Ubuntu 中完美运行,但是,它在我用来编译 Mac 版本的虚拟机 运行 Mac 中抛出 StopIteration 错误。

它抛出的错误如下(我删除了路径,因为它包含项目名称,这是未发表的作品):

StopIteration: 
At:
  <path>/site-packages/matplotlib/bezier.py(352): split_path_inout
  <path>/site-packages/matplotlib/patches.py(2754): _shrink
  <path>/site-packages/matplotlib/patches.py(2771): _call_
  <path>/site-packages/networkx/drawing/nx_pylab.py(794): _connectionstyle
  <path>/site-packages/matplotlib/patches.py(4453): _get_path_in_displaycoord
  <path>/site-packages/matplotlib/patches.py(4440): get_path
  <path>/site-packages/matplotlib/axes/_base.py(2376): _update_patch_limits
  <path>/site-packages/matplotlib/axes/_base.py(2358): add_patch
  <path>/site-packages/networkx/drawing/nx_pylab.py(867): _draw_networkx_edges_fancy_arrow_patch
  <path>/site-packages/networkx/drawing/nx_pylab.py(889): draw_networkx_edges
  <path>/site-packages/networkx/drawing/nx_pylab.py(334): draw_networkx
  <path>/site-packages/networkx/drawing/nx_pylab.py(120): draw
  <path>/bayesian_network/draw_model.py(7): <module>

我检查过学习图是否有节点和边。如果我尝试绘制只有一个节点的图形,它就可以工作。

我已经升级了所有软件包,包括 pgmpy、matplotlib 和 networkx。

这个问题是否与在虚拟机中执行的代码有关运行 Mac?我目前无法访问真正的 Mac 机器来测试它。

我终于解决了,把位置加成圆形布局。貌似在以前的版本中是自动执行的,但是在虚拟机中安装的新版本中没有。

pos = nx.circular_layout(graph_model)

nx.draw(graph_model, node_color='#00b4d9', pos=pos, with_labels=True)