import numpy as np
import matplotlib.pyplot as plt
li = [[0,0],[20,10], [30,40] ]
xs = [x[0] for x in li]
ys = [x[1] for x in li]
aa = [0, 10, 40]
bb = [0, 10, 40]
fig = plt.figure(figsize=(12,4))
print "type(fig) : " , type(fig)
ax = fig.add_subplot(1,1,1)
print "type(ax) : " , type(ax)
print "ax : " , ax
ax.plot(xs, ys, '--', linewidth=2, color='red')
ax.plot(ys, xs)
ax.plot(aa, bb)
plt.legend(('PID_1', 'PID_2'), loc='best', shadow=True, fancybox=True, ncol=2)
plt.show()
gca = fig.gca() #could have used plt.gca() also
print "fig : " , fig , ", type(fig) : " , type(fig), ", id(fig) : " , id(fig)
figObj = gca.get_figure()
print "figObj : " , figObj , ", type(figObj) : " , type(figObj) , ", id(figObj) : " , id(figObj)
currGcf = plt.gcf()
print "currGcf : " , currGcf , ", type(currGcf) : " , type(currGcf), ", id(currGcF) : " , id(currGcf)
输出:
fig : Figure(960x320) , type(fig) : <class 'matplotlib.figure.Figure'> , id(fig) : 172216392
figObj : Figure(960x320) , type(figObj) : <class 'matplotlib.figure.Figure'> , id(figObj) : 172216392
currGcf : Figure(480x320) , type(currGcf) : <class 'matplotlib.figure.Figure'> , id(currGcF) : 213232048
<matplotlib.figure.Figure at 0xcb5a9b0>
我认为gcf给出了当前的数字..所以,在这种情况下,前两个输出给出了相同的id和大小。
但是,size和id的最后一个gcf输出是不同的.. 请解释一下,为什么会有这种差异??
答案 0 :(得分:1)
这是因为您放置了plt.show()
。要在调用show
后运行脚本,需要关闭窗口。然后,这会更改“当前”图形(如果您尝试绘制其他内容,它将显示在新的图形窗口中)。
如果您将plt.show()
移到脚本末尾,则所有三行(fig, figObj, currGcf
)都会打印相同的对象ID