在matplotlib中向图添加文本

时间:2019-10-14 21:04:51

标签: python matplotlib

我想在3D线框图中添加一些文本。我从matplotlib画廊中this example的代码开始。在Axes文档中,我找到了text()。如果我正确地阅读了此内容,则有4个必需的位置参数(包括self)。我将示例修改如下:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt


fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Grab some test data.
X, Y, Z = axes3d.get_test_data(0.05)

# Plot a basic wireframe.
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
ax.text(0, 0, "I'm here")
plt.show()

运行此代码时,我得到

  

TypeError:text()缺少1个必需的位置参数:'s'

该如何解决?我在这里做什么错了?

2 个答案:

答案 0 :(得分:1)

在这种情况下,您不是在处理Axes对象,而是在处理Axes3D对象。因此,您需要为其text()方法提供三个坐标数字,而不仅仅是2。

或者,您也可以使用text2D()方法,该方法只需要两个坐标号输入参数。

答案 1 :(得分:1)

help(ax.text)提供了正确的文档:

Help on method text in module mpl_toolkits.mplot3d.axes3d:

text(x, y, z, s, zdir=None, **kwargs) method of matplotlib.axes._subplots.Axes3DSubplot instance
...

因此,您需要3个位置坐标,并且不需要self