我想知道matplotlib的SubplotZero()
函数做了什么,知道matplotlib的文档中没有引用它,但至少在matplotlib的website here中使用了三个例子。例如)。此外,由于文档中没有它,建议使用安全吗?或者在matplotlib的未来版本中是否存在可能被删除的风险?
我想用matplotlib绘制一个显示“零”轴的图。这些图的示例显示在matplotlib的examples
页面中。这是通过
ax.axis["xzero"].set_visible(True)
然而,写作
ax = plt.gca()
ax.axis["xzero"].set_visible(True)
产生错误
ax.axis["xzero"].set_visible(True)
TypeError: 'method' object is not subscriptable
相反,如示例中所示,应该写一个(注意:实际上有另一种方法可以实现相同的结果:请参阅@ExitanceOfBeingErnest的答案)
from mpl_toolkits.axisartist.axislines import SubplotZero
fig = plt.figure()
ax = SubplotZero(fig, 1, 1, 1)
fig.add_subplot(ax)
ax.axis["xzero"].set_visible(True)
确实有效。但是,我很想知道SubplotZero()
函数的作用,以及为什么它首先存在(毕竟为什么它需要它?)。所以我去查看文档并意识到它不是它的一部分!
有人知道这些问题的答案吗?
答案 0 :(得分:1)
SubplotZero()
文档在哪里?它目前没有记录,因为它是AxesZero
,通过
SubplotZero = matplotlib.axes.subplot_class_factory(AxesZero)
AxesZero
也没有记录,但至少会出现在文档中。
通常,完整的mpl_toolkits.axisartist
文档记录很少,并且在当前文档中完全缺失。但有人可以提到older version或current devdocs。
在将来的版本中不应删除它。
TypeError
错误TypeError: 'method' object is not subscriptable
告诉您无法索引方法。
此处发生这种情况,因为axis
的{{1}}是SubplotZero
,与"通常"完全不同。 mpl_toolkits.axisartist.axislines.AxesZero
。前者提供其各自的轴作为字典的一部分,可以作为matplotlib.axes.Axes
访问。后者是一种方法,需要调用并对轴进行一些修改,例如: ax.axis["xzero"]
关闭轴。确实非常不幸的是,他们都有一个属性ax.axis("off")
,最后提到完全不同的东西。
虽然axis
模块提供了引用example中所示的此功能,但无可否认地使用此模块(由于缺少/不完整的文档)相当麻烦。
另一种方法是使用通常的mpl_toolkits.axisartist
。要将脊椎定位在零位置,可以参考Spine placement demo。
要在零y位置重新创建具有x轴脊柱的链接示例,可以例如做
matplotlib.axes.Axes
使用普通ax.spines['bottom'].set_position(('data', 0))
实例matplotlib.axes.Axes
。
完整示例:
ax