python-matplotlib 属性错误 Axes3D 对象没有 set_zticks 属性

3 投票
1 回答
10485 浏览
提问于 2025-04-17 15:19

我正在尝试复制scikit-learn中的一个例子,具体是plot_iris_dataset.py。我相信我安装的是最新的python-matplotlib(截至2013年2月8日),但是在调用Axes3D对象中的set_zticks(())方法时遇到了错误。我不会复制所有代码,但大致是这样的:

...
ax = Axes3D(fig, elev=-150, azim=110)
...
ax.set_zticks(()

结果出现了一个错误:

AttributeError: 'Axes3D' object has no attribute 'set_zticks'

因为我对scikit-learn和matplotlib还很陌生,所以我不太确定这个调用应该做什么。如果我把这行代码注释掉,3D图就能正常显示(上面页面的其他代码都能正常工作)。我尝试在网上搜索,但没有找到解决办法,似乎这个调用可能已经过时了。我想在stackoverflow上发个问题,希望有人能为我或其他人解释一下。

补充:我现在注意到这个调用是用来去掉刻度标记的。它似乎在x、y或z方向上都不管用,但我只在z方向上得到了错误。我的图表显示如下(出于某种原因,数据点没有保存在PNG文件中)我的图,注意所有维度中的刻度标记

其他参考资料:

1 个回答

3

我终于解决了这个问题,感谢 @tcaswell 的帮助……我经验不多,所以最后到底是什么起作用了我也不太确定,但我会尽量解释一下:

简短的回答是:把 matplotlib 更新到最新版本(从 1.0.1 更新到 1.2)似乎是解决办法。

详细的说:更新 matplotlib 可不是件简单的事!我尝试了很多方法,所以不太确定最后是什么奏效了,但我可以给你一个大致的流程:

截至2013年2月9日,使用 apt-get install 只能安装到 1.0.1 版本。所以,我卸载了旧版本,然后按照 matplotlib 页面 上的说明从源代码安装。

当我这样做的时候,代码编译是成功的,但我的图形窗口却没有显示出来。这是因为后端的问题,没有正确识别 GTK(大概是这个原因)。为了解决这个问题,我修改了用于构建 matplotlib 的 setup.cfg 文件。

<line 58> gtk = True
<line 57> gtkagg = True
<line 74> backend = GTKAgg

然后我按照上面页面的说明进行了构建和编译。

注意:我做了很多其他的事情,所以不确定上面的步骤是否是最简化的解决方案。

撰写回答