"plt.figure"有什么意义?

Jia*_*ang 4 python matplotlib python-3.x

import numpy as np
import matplotlib.pyplot as plt

def f(t):
    return np.exp(-t) * np.cos(2*np.pi*t)

t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)

plt.figure(1)
plt.subplot(211)
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')

plt.subplot(212)
plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
plt.show()
Run Code Online (Sandbox Code Playgroud)

据官方Matplotlib文件(https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.figure)一个图形功能

"如果提供了num,并且已存在具有此id的数字,请将其设为活动状态,并返回对它的引用."

我尝试在没有plt.figure的情况下在我的Ipython上执行上述操作,但它仍然显示了两张所需的图片.

Chi*_*iel 6

plt.figure您提供一个新图形,并根据给定的参数打开或不打开一个新图形。比较:

plt.figure(1)
plt.plot(x1, y1)
plt.plot(x2, y2)
Run Code Online (Sandbox Code Playgroud)

plt.figure(1)
plt.plot(x1, y1)
plt.figure(2)
plt.plot(x2, y2)
Run Code Online (Sandbox Code Playgroud)

plt.figure(1)
plt.plot(x1, y1)
plt.figure(1)
plt.plot(x2, y2)
Run Code Online (Sandbox Code Playgroud)

您将看到第一个示例等于第三个示例,因为您plt.figure(1)在第三个示例中通过第二次调用检索到相同的图窗句柄。


Imp*_*est 6

有三种情况plt.figure有用:

  1. 获取图形的句柄. 在许多情况下,有一个图形的句柄,即一个用于存储matplotlib.figure.Figure实例的变量,以便以后可以使用它是很有用的.例:

    fig = plt.figure()
    #... other code
    fig.autofmt_xdate()
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置图形参数. 为图设置一些参数的选项是将它们作为参数提供给plt.figure,例如

    plt.figure(figsize=(10,7), dpi=144) 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建几个数字.为了在同一个脚本中创建几个图形,plt.figure可以使用.例:

    plt.figure()      # create a figure
    plt.plot([1,2,3])
    plt.figure()      # create another figure
    plt.plot([4,5,6]) # successive commands are plotted to the new figure
    
    Run Code Online (Sandbox Code Playgroud)

在许多其他情况下,实际上根本不需要使用plt.figure.使用pyplot接口,任何绘图命令拨打电话就足以创造一个人物,你可以随时获取句柄与目前的数字plt.gcf().

从另一个角度来看,通常不仅需要具有图形的手柄而且还需要具有要绘制的轴.在这种情况下,使用plt.subplots更有利,fig, ax = plt.subplots().