如何将函数的结果另存为.png文件

时间:2019-05-22 09:12:40

标签: python python-3.x matplotlib plot

我有一段从工作中的协作者那里获得的代码。这段代码产生了如下图所示的图。 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”功能,但这只会保存空白图像。

我对编码非常陌生,并且正在尝试快速学习,因此,如果这个问题的措词或解释不正确,请让我知道什么令人困惑,因为我也在学习如何提出此类问题事情。

1 个答案:

答案 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()