You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib调用plt.show()抛出ValueError错误,求问题成因

问题描述

我尝试运行以下简单的Python代码:

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3])
y = np.array([4, 5, 6])

plt.plot(x, y)
plt.show()

但在执行plt.show()时出现如下错误:

Traceback (most recent call last):
  File "/home/user/Pycharm/someproject/sam.py", line 36, in <module>
    plt.show()
  File "/home/user/Programs/miniconda/envs/plot/lib/python3.10/site-packages/matplotlib/pyplot.py", line 612, in show
    return _get_backend_mod().show(*args, **kwargs)
  File "/home/yz8zdw/Programs/pycharm-2024.1.3/plugins/python/helpers/pycharm_matplotlib_backend/backend_interagg.py", line 41, in __call__
    manager.show(**kwargs)
  File "/home/yz8zdw/Programs/pycharm-2024.1.3/plugins/python/helpers/pycharm_matplotlib_backend/backend_interagg.py", line 144, in show
    self.canvas.show()
  File "/home/yz8zdw/Programs/pycharm-2024.1.3/plugins/python/helpers/pycharm_matplotlib_backend/backend_interagg.py", line 80, in show
    FigureCanvasAgg.draw(self)
  File "/home/user/Programs/miniconda/envs/plot/lib/python3.10/site-packages/matplotlib/backends/backend_agg.py", line 387, in draw
    self.figure.draw(self.renderer)
  File "/home/user/Programs/miniconda/envs/plot/lib/python3.10/site-packages/matplotlib/artist.py", line 95, in draw_wrapper
    result = draw(artist, renderer, *args, **kwargs)
  File "/home/user/Programs/miniconda/envs/plot/lib/python3.10/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
    return draw(artist, renderer)
  File "/home/user/Programs/miniconda/envs/plot/lib/python3.10/site-packages/matplotlib/figure.py", line 3161, in draw
    self.patch.draw(renderer)
  File "/home/user/Programs/miniconda/envs/plot/lib/python3.10/site-packages/matplotlib/artist.py", line 72, in draw_wrapper
    return draw(artist, renderer)
  File "/home/user/Programs/miniconda/envs/plot/lib/python3.10/site-packages/matplotlib/patches.py", line 632, in draw
    self._draw_paths_with_artist_properties(
  File "/home/user/Programs/miniconda/envs/plot/lib/python3.10/site-packages/matplotlib/patches.py", line 617, in _draw_paths_with_artist_properties
    renderer.draw_path(gc, *draw_path_args)
  File "/home/user/Programs/miniconda/envs/plot/lib/python3.10/site-packages/matplotlib/backends/backend_agg.py", line 131, in draw_path
    self._renderer.draw_path(gc, path, transform, rgbFace)
ValueError: object __array__ method not producing an array

环境信息:

python                    3.8.20
numpy                     1.16.0
matplotlib                3.7.5
问题成因

这个错误的核心是numpy与matplotlib版本不兼容:

  • matplotlib 3.7.5对numpy的最低版本要求为1.21.0,当前使用的numpy 1.16.0远低于该要求。
  • 低版本numpy的__array__方法实现无法满足matplotlib 3.7.5的调用预期,在绘图渲染环节,matplotlib尝试将对象转换为numpy数组时,低版本numpy无法生成符合要求的数组,从而触发报错。
  • 另外,numpy 1.16.0与Python 3.8的兼容性本身存在瑕疵,进一步放大了版本不匹配带来的问题。

内容的提问来源于stack exchange,提问作者TheTomer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:40:07