【问题标题】:How to debug a "IndexError: invalid index to scalar variable" error in Python?如何在 Python 中调试“IndexError:标量变量的无效索引”错误?
【发布时间】:2020-11-11 15:07:03
【问题描述】:

这是我的代码:

import matplotlib.patches as pat
oval = pat.Ellipse(v1_mean,v2_mean,v1_std*2,v2_std*2)

fig,graph = plt.subplots()
graph.scatter(v1,v2)
graph.scatter(v1_mean,v2_mean, s=100)
graph.text(v1_mean,v2_mean, 'Mean')
graph.add_patch(oval)

这就是随之而来的错误:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-40-2278a0e6f4cf> in <module>()
      7 graph.scatter(v1_mean,v2_mean, s=100)
      8 graph.text(v1_mean,v2_mean, 'Mean')
----> 9 graph.add_patch(oval)
     10 
     11 graph.xlabel('V1')

/opt/conda/lib/python3.6/site-packages/matplotlib/axes/_base.py in add_patch(self, p)
   2033         if p.get_clip_path() is None:
   2034             p.set_clip_path(self.patch)
-> 2035         self._update_patch_limits(p)
   2036         self.patches.append(p)
   2037         p._remove_method = lambda h: self.patches.remove(h)

/opt/conda/lib/python3.6/site-packages/matplotlib/axes/_base.py in _update_patch_limits(self, patch)
   2053         vertices = patch.get_path().vertices
   2054         if vertices.size > 0:
-> 2055             xys = patch.get_patch_transform().transform(vertices)
   2056             if patch.get_data_transform() != self.transData:
   2057                 patch_to_data = (patch.get_data_transform() -

/opt/conda/lib/python3.6/site-packages/matplotlib/patches.py in get_patch_transform(self)
   1492 
   1493     def get_patch_transform(self):
-> 1494         self._recompute_transform()
   1495         return self._patch_transform
   1496 

/opt/conda/lib/python3.6/site-packages/matplotlib/patches.py in _recompute_transform(self)
   1476                  not directly access the transformation member variable.
   1477         """
-> 1478         center = (self.convert_xunits(self.center[0]),
   1479                   self.convert_yunits(self.center[1]))
   1480         width = self.convert_xunits(self.width)

IndexError: invalid index to scalar variable.

基本上,我要做的是将椭圆形和一些数据绘制到同一个图表中。但似乎错误与椭圆的中心有关,但我不知道到底出了什么问题。奇怪的是我完全按照老师的做法,但我的却出现了错误,而他的还可以。

【问题讨论】:

    标签: matplotlib graph patch index-error


    【解决方案1】:

    奇怪的是我完全按照老师的做法,但是我的却出现了错误,而他的还可以。

    可能你没有完全按照。根据matplotlib.patches.Ellipse 的文档,椭圆中心的 xy 坐标 将作为元组而不是单个参数给出,所以它不是

    oval = pat.Ellipse(v1_mean,v2_mean,v1_std*2,v2_std*2)
    

    但是

    oval = pat.Ellipse((v1_mean, v2_mean), v1_std*2, v2_std*2)
    

    相反。不幸的是,Ellipse 没有对此发出警告,而是存储了一个数字作为椭圆中心。

    【讨论】:

    • 成功了!!非常感谢你的帮助!我终于能够解决困扰我数周的问题了,哈哈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    相关资源
    最近更新 更多