我有一段从工作中的协作者那里获得的代码。这段代码产生了如下图所示的图。 example image of a plot
它是通过引用另一段代码中的另一个函数来完成的;我不想以任何方式更改。
我想做的是编写一段代码将此图另存为png文件,即我正在寻找一个函数,可以将其他函数作为变量保存为png /。 jpeg文件。
代码:
代码如下:
for file in files:
import matplotlib.pyplot as plt
connection = sqlite3.connect( file )
animalPool = AnimalPool( )
animalPool.loadAnimals( connection )
# show the mask of animals at frame 300
animalPool.showMask( 701 )
它正在调用以下函数:
def showMask(self, t ):
'''
show the mask of all animals in a figure
'''
fig, ax = plt.subplots()
ax.set_xlim(90, 420)
ax.set_ylim(-370, -40)
for animal in self.getAnimalList():
mask = animal.getBinaryDetectionMask( t )
mask.showMask( ax=ax )
plt.show()
我已经尝试过matplotlib的“ savefig”功能,但这只会保存空白图像。
我对编码非常陌生,并且正在尝试快速学习,因此,如果这个问题的措词或解释不正确,请让我知道什么令人困惑,因为我也在学习如何提出此类问题事情。
答案 0 :(得分:0)
产生matplotlib图的函数应以图形或轴作为输入,并且仅在需要时才选择创建它们。他们应该返回创建的对象以供进一步使用。最后,他们不应致电plt.show()
,或者,如果必须,请提供退出选项。
例如,对于单轴绘图功能,它看起来像
def plottingfunction(*arguments, ax=None, show=True):
if ax is None:
fig, ax = plt.subplots()
else:
fig = ax.figure
# do something with fig and ax here, e.g.
line, = ax.plot(*arguments)
if show:
plt.show()
return fig, ax, line
如果您遵循这种结构,则在调用该函数后很容易执行所需的操作
fig, _, _ = plottingfunction([1,2,3], [3,2,4], show=False)
fig.savefig("myplot.png")
plt.show()