Alb*_*tiz 5 python macos matplotlib networkx pgmpy
我有一个 python 脚本,它使用 pandas 加载 csv 文件,然后使用 pgmpy 通过数据学习贝叶斯网络。
学习结构后,我使用以下函数绘制图表:
nx.draw(graph_model, node_color='#00b4d9', with_labels=True)
Run Code Online (Sandbox Code Playgroud)
这在 Ubuntu 中完美运行,但是,它在运行 Mac 的虚拟机中引发 StopIteration 错误,我用它来编译 Mac 版本。
它抛出的错误如下(我已删除路径,因为它包含项目的名称,这是未发布的工作):
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>
Run Code Online (Sandbox Code Playgroud)
我已经检查过学习的图有节点和边。如果我尝试绘制一张只有一个节点的图,它就会起作用。
我已经升级了所有软件包,包括 pgmpy、matplotlib 和 networkx。
此问题是否与在运行 Mac 的虚拟机中执行的代码有关?我目前无法访问真正的 Mac 机器来测试它。
我最终通过将位置添加为圆形布局来解决它。看起来在以前的版本中,它会自动执行此操作,但在安装在虚拟机中的新版本中则不会。
pos = nx.circular_layout(graph_model)
nx.draw(graph_model, node_color='#00b4d9', pos=pos, with_labels=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1062 次 |
| 最近记录: |