ValueError:没有足够的值来解包(预期 4,得到 2)

数据挖掘 熊猫 数据科学模型 matplotlib
2021-10-10 00:56:43

我已经编写了这段代码 fig, (axis1, axis2,axis3, axis4)=plt.subplots(2,2,figsize=(10,4)) ,但遇到了这个错误 ValueError: not enough values to unpack (expected 4, got 2) 我尝试了很多方法来消除这个错误,但一切都是徒劳的。你能向我解释为什么我会收到这个错误吗?

2个回答

这是因为您还没有查看plt.subplot函数中的值是如何打包的。

>>> plt.subplots(2,2,figsize=(10,4))
(<matplotlib.figure.Figure at 0xa3918d0>, array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000A389470>,
     <matplotlib.axes._subplots.AxesSubplot object at 0x000000000A41AD30>],
    [<matplotlib.axes._subplots.AxesSubplot object at 0x000000000A6F7EB8>,
     <matplotlib.axes._subplots.AxesSubplot object at 0x000000000BC232E8>]], dtype=object))

与其一次性解包所有值,不如分步解包。那时你会得到一个更好的主意。

对于您的解决方案,打开包装 -

>>> fig, [[axis1, axis2],[axis3, axis4]] = plt.subplots(2,2,figsize=(10,4))

第二个返回值将是一个 2x2 数组。试试这个。

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2,2,figsize=(10,4))