【问题标题】:Getting ZeroDivisionError on figurecanvasTkagg on one computer but not on another [matplotlib]在一台计算机上的 figurecanvasTkagg 上获取 ZeroDivisionError,但在另一台计算机上没有 [matplotlib]
【发布时间】:2023-02-03 17:31:48
【问题描述】:

我一直在两台不同的计算机上处​​理我的代码,使用 git 存储库提交所有更改。

最近我遇到了一个奇怪的问题,当使用 figurecanvasTkagg.draw() 时,我总是在一台计算机上得到 ZeroDivisionError,而另一台计算机运行正常并执行代码直至完成。

它具体说它在 matplotlib/_layoutgrid.py 的 grid_constraints 方法中执行 h0 = h / self.height_ratios[0] 时崩溃

实际上我无法更改任何内容,因为此方法就在库中,而且我找不到访问或修改它的方法。我已经尝试搜索几天来解决此错误,但我一无所获。

这是我在执行 draw() 函数时收到的消息错误:

File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/backends/backend_tkagg.py", line 10, in draw super().draw() File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py", line 405, in draw self.figure.draw(self.renderer) File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/artist.py", line 74, in draw_wrapper result = draw(artist, renderer, *args, **kwargs) File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/artist.py", line 51, in draw_wrapper return draw(artist, renderer) File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/figure.py", line 3065, in draw self.get_layout_engine().execute(self) File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/layout_engine.py", line 255, in execute return do_constrained_layout(fig, w_pad=w_pad, h_pad=h_pad, File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/_constrained_layout.py", line 104, in do_constrained_layout layoutgrids = make_layoutgrids(fig, None, rect=rect) File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/_constrained_layout.py", line 192, in make_layoutgrids layoutgrids = make_layoutgrids_gs(layoutgrids, gs) File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/_constrained_layout.py", line 234, in make_layoutgrids_gs layoutgrids[gs] = mlayoutgrid.LayoutGrid( File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/_layoutgrid.py", line 112, in __init__ self.add_constraints() File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/_layoutgrid.py", line 149, in add_constraints self.grid_constraints() File "/home/marcjou/anaconda3/envs/tMednet/lib/python3.8/site-packages/matplotlib/_layoutgrid.py", line 247, in grid_constraints h0 = h / self.height_ratios[0] ZeroDivisionError: float division by zero

提前致谢!

【问题讨论】:

    标签: python matplotlib tkinter tkinter-canvas dividebyzeroexception


    【解决方案1】:

    错误消息表明在 matplotlib._layoutgrid 模块的 grid_constraints 方法中发生了被零除。这很可能发生,因为 height_ratios 属性在第一个索引中为空或值为 0。您应该检查您的代码以确保正确填充了 height_ratios 属性并且它不包含任何零值。如果 height_ratios 为空或包含任何零值,您可能需要在代码中添加检查以引发错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 2014-11-10
      • 1970-01-01
      相关资源
      最近更新 更多