4

我正在尝试复制 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 图就好了(上面页面上的其余代码都有效)。我尝试了一些谷歌搜索,但还没有找到解决方法,但我得到的提示可能是这种调用已经过时了。我想我会在stackoverflow上发布一个问题,希望有人可以为我或其他人澄清。

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

其他参考:

4

1 回答 1

2

感谢@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

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

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

于 2013-02-09T20:04:54.617 回答