你如何在Python的matplotlib中获得当前的数字?

R. *_*yne 7 python matplotlib figure

我正在玩一个示例脚本,该脚本显示如何在数字之间来回切换.我在这里找到了这个例子:http://matplotlib.org/examples/pylab_examples/multiple_figs_demo.html 当我尝试打印图号时,我得到"图(640x480)"而不是我期待的数字1.你怎么得到这个号码?

# Working with multiple figure windows and subplots
import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0.0, 2.0, 0.01)
s1 = np.sin(2*np.pi*t)
s2 = np.sin(4*np.pi*t)

plt.figure(1)
plt.subplot(211)
plt.plot(t, s1)
plt.subplot(212)
plt.plot(t, 2*s1)

plt.figure(2)
plt.plot(t, s2)

# now switch back to figure 1 and make some changes
plt.figure(1)
plt.subplot(211)
plt.plot(t, s2, 's')
ax = plt.gca()
ax.set_xticklabels([])

# Return a list of existing figure numbers.
print "Figure numbers are = " + str(plt.get_fignums())
print "current figure = " + str(plt.gcf())
print "current axes   = " + str(plt.gca())

plt.show()
Run Code Online (Sandbox Code Playgroud)

这是输出:

Figure numbers are = [1, 2]
current figure = Figure(640x480)
current axes   = Axes(0.125,0.53;0.775x0.35)
Run Code Online (Sandbox Code Playgroud)

a_g*_*est 12

Figure对象具有number属性,因此您可以通过获取数字

>>> plt.gcf().number
Run Code Online (Sandbox Code Playgroud)

  • 是的,这很有效.你怎么知道的?即使在知道如何操作之后,我也找不到任何相关文档. (3认同)
  • @R.Wayne 说实话,我以前不知道,但我认为有这样一个属性(我认为“有根据的猜测”一词非常适用)。所以我检查了 `dir(plt.gcf())`,它显示了 `number` 属性。此外,`help(pyplot.figure)` 提供了以下信息: _[...] 图形对象将这个数字保存在一个 `number` 属性中。_ 通常,检查 `dir(...) ` 在要从中检索属性的任何对象上。`help(...)` 通常也很有用! (2认同)
  • @R.Wayne `pyplot` 似乎在内部为每个数字存储一个数字,即使您为其分配一个字符串,并且只要您不提供一个数字,它就会从已经存在的最大数字自动增加它。示例:`plt.figure(3); plt.gcf().number => 3`; `plt.figure(1); plt.gcf().number => 1`; `plt.figure('a'); plt.gcf().number => 4`(而不是仍然“免费”的 `2`)。 (2认同)