python-matplotlib AttributeError Axes3D 对象没有属性 set_zticks

Posted

技术标签:

【中文标题】python-matplotlib AttributeError Axes3D 对象没有属性 set_zticks【英文标题】:python-matplotlib AttributeError Axes3D object has no attribute set_zticks 【发布时间】:2013-01-24 21:28:30 【问题描述】:

我正在尝试复制 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 的新手,我不太确定调用应该做什么。如果我把它注释掉,我会得到一个 3-D 图就好了(上面页面上的其余代码都有效)。我尝试了一些谷歌搜索,但还没有找到解决方法,但我得到的提示可能是这种调用已经过时了。我想我会在 *** 上发布一个问题,希望有人可以为我或其他人澄清。

编辑:我现在注意到该调用应该删除刻度线。它似乎不适用于任何方向,x、y 或 z,但我只收到 z 方向的错误。这是我的图表的显示方式(数据点由于某种原因没有保存在 PNG 文件中)

其他参考资料:

a message thread elsewhere 说这个错误可能会在以后的版本中修复。 this page gets a google hit 但我不明白或看不到对 zticks 的引用。

【问题讨论】:

matplotlib.__version__ 给了什么? 并且您需要调用plt.draw() 以获得对axes 对象的一些修改的效果以反映在显示中(您更改了对象的状态,但不会自动更新基于该对象的漂亮事物的状态)。 @tcaswell 它给出了 '1.0.1' ...我现在看到这不是最新版本。我的错误是我认为它是最新的,因为 apt-get 告诉我(我还是 linux / 等的新手)。我将尝试升级到 1.2 并报告。如果您很快看到这一点:除了 apt-get,最好的升级方式是什么?我试试点子。谢谢! sudo pip install matplotlib --upgrade 似乎工作正常,我会检查它是否修复了一些问题。 您应该添加最后一条评论作为答案并接受(当它允许时)您自己的答案。 【参考方案1】:

感谢@tcaswell,我终于解决了这个问题......我没有经验,所以我不太确定,最后,什么有效,但我会尝试解释:

简答:更新到最新的 matplotlib(从 1.0.1 到 1.2)似乎是解决方案。

长答案:更新 matplotlib 并不容易!我尝试了很多东西,所以我不确定最终效果如何,但这里有一个大致的大纲:

截至 2013 年 2 月 9 日,apt-get install 仅获取版本 1.0.1。所以,我按照matplotlib page 的描述从源代码卸载并安装。

当我尝试这个时,代码已编译但我的图形窗口不会显示。这是由于后端问题,没有正确识别 GTK(或类似的东西)。为了解决这个问题,我自定义了 setup.cfg 文件来构建 matplotlib

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

然后我按照上面页面的描述构建和编译。

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

【讨论】:

以上是关于python-matplotlib AttributeError Axes3D 对象没有属性 set_zticks的主要内容,如果未能解决你的问题,请参考以下文章

Python-Matplotlib 25 极坐标

python-matplotlib

Python-Matplotlib基础

Python-Matplotlib 13 网格

python-matplotlib学习

Python-Matplotlib2 Questions