直方图seaborn→matplotlib→pandas报错ValueError: Multi-dimensional indexing (e.g. `obj[:, None]`) is no longer supported

问题描述:画用seaborn画直方图时报错。尝试更新3个库、在传入sns.hist参数时将数据转换成numpy array后,仍然报同样错误

报错内容:

Traceback (most recent call last):
  File "file.py", line 116, in <module>
    sns.histplot(fp_slope_values, bins=20, kde=True, stat='percent')
  File "\lib\site-packages\seaborn\distributions.py", line 1416, in histplot
    p.plot_univariate_histogram(
  File "\lib\site-packages\seaborn\distributions.py", line 651, in plot_univariate_histogram
    line, = ax.plot(
  File "\lib\site-packages\matplotlib\axes\_axes.py", line 1632, in plot
    lines = [*self._get_lines(*args, data=data, **kwargs)]
  File "\lib\site-packages\matplotlib\axes\_base.py", line 312, in __call__
    yield from self._plot_args(this, kwargs)
  File "\lib\site-packages\matplotlib\axes\_base.py", line 487, in _plot_args
    x = _check_1d(xy[0])
  File "\lib\site-packages\matplotlib\cbook\__init__.py", line 1328, in _check_1d
    ndim = np.array(x[:, None].ndim)
  File "\lib\site-packages\pandas\core\indexes\base.py", line 5419, in __getitem__
    disallow_ndim_indexing(result)
  File "\lib\site-packages\pandas\core\indexers\utils.py", line 341, in disallow_ndim_indexing
    raise ValueError(
ValueError: Multi-dimensional indexing (e.g. `obj[:, None]`) is no longer supported. Convert to a numpy array before indexing instead.

分析:是从matplotlib→到pandas的过程中有错

解决:改matplotlib库文件的代码,直接在中间传入参数的时候就将数据变换成numpy array格式

  1. 改代码的文件路径:
\lib\site-packages\matplotlib\cbook\__init__.py
  1. 在~第1327行,ndim = x[:, None].ndim前,添加
x = np.array(x)

解决

posted @ 2025-10-05 13:56  Hahnunah  阅读(25)  评论(0)    收藏  举报