Python-Matplotlib AttributeError: Axes3D对象没有属性set_zticks。

3

我正在尝试复制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不是很熟悉,所以并不确定这个调用应该做什么。如果我将它注释掉,那么三维图会正常显示(上面页面上的其他代码可以运行)。我尝试了一些搜索,但没有找到解决方法,但我得知这种调用可能已经过时了。我想在stackoverflow上发布一个问题,希望有人能为我或其他人澄清一下。
编辑:我现在注意到这个调用应该删除刻度线,但它似乎对任何方向(x、y或z)都不起作用,但我只在z方向上出现了错误。这是我的图形的样子(由于某些原因,数据点没有保存在PNG文件中)My plot, notice the tick marks in all dimensions
其他参考资料:

1
你可能需要调用 plt.draw() 来使一些对于 axes 对象的修改反映在显示中(你改变了对象的状态,但这并不会自动更新基于该对象的漂亮东西的状态)。 - tacaswell
@tcaswell 它返回的是“1.0.1”……我现在意识到那不是最新版本。我的错误在于,我以为它已经是最新的了,因为apt-get告诉我是这样(我还是Linux /等方面的新手)。我会尝试升级到1.2并回报结果。如果您能快速看到这个消息:除了apt-get之外,有什么最好的升级方式吗?我会尝试pip。谢谢! - Steve Koch
没有成功。看起来这是我的问题,但我很难解决。即使sudo pip install matplotlib --upgrade可以工作,我仍然有1.0.1版本。这是我使用apt-get安装python-matplotlib时获得的版本。我现在有点困惑,希望能得到关于如何获取最新的python-matplotlib的任何提示。谢谢! - Steve Koch
谢谢你,@tcaswell!我不确定这个问题应该放在哪里,所以现在我会总结一下什么是有效的: - Steve Koch
1
你应该把最后的评论作为答案,并接受(当允许时)你自己的答案。 - tacaswell
显示剩余4条评论
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

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

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


请参考此答案,了解我如何处理这个问题(在第三次看到相同的问题后,我最终回答了它...)。 - tacaswell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接