2017-09-07 107 views
2
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() 

根据官方Matplotlib文件(https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.figure) 甲图形功能将“plt.figure”有什么意义?

“。如果提供num,以及与此ID的数字已经存在,使它 活性,并返回对它的引用。“

我试过在没有plt.figure的Ipython上执行上面的操作,但它仍然显示了两个所需的图片。

回答

3

有三种情况plt.figure是有用的:

  1. 获得一个句柄的身影。在许多情况下,对图形进行处理是很有用的,例如将一个变量存储在matplotlib.figure.Figure实例中,以便稍后可以使用它。例如:

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

    plt.figure(figsize=(10,7), dpi=144) 
    
  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 
    

在其他许多情况下,实际上不会是任何需要使用plt.figure。使用pyplot接口,任何绘图命令的调用都足以创建一个图形,并且您始终可以使用plt.gcf()获取当前图形的句柄。

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

2

plt.figure给你一个新的数字,并根据给定的参数它打开一个新的数字或不。比较:

plt.figure(1) 
plt.plot(x1, y1) 
plt.plot(x2, y2) 

plt.figure(1) 
plt.plot(x1, y1) 
plt.figure(2) 
plt.plot(x2, y2) 

plt.figure(1) 
plt.plot(x1, y1) 
plt.figure(1) 
plt.plot(x2, y2) 

您将看到第一个例子是等于第三,因为你与第二plt.figure(1)调用检索相同的数字手柄在第三个例子中。