在Matplotlib中将多个.png图形输出到Python 3.4中的一个zip文件

时间:2015-08-10 12:56:22

标签: python matplotlib

我编写了一个程序,使用Python中的MatPlotLib从CSV文件中输出多个不同的饼图(超过60个)。我不认为我需要共享所有代码,但我有一个创建图表的draw()函数,结尾如下:

def draw(data):
    [make the graph]
    plt.savefig(filename)

此函数成功将我的一个图形作为cwd中的.png文件。然后我运行一个循环,为我的数据的每个部分创建一个饼图。代码如下:

if __name__ == '__main__':
    data = sys.argv[1]
    things = process(data) 
    for thing in things.values():
        draw(thing)

我想知道是否有任何Python软件包可以帮助我自动将所有60多个图表输出到一个zip文件。

2 个答案:

答案 0 :(得分:5)

当然,有标准zipfile模块,可以压缩现有文件,也可以压缩一串字节。因此,如果您不想单独创建文件然后压缩它们,则可以将它们保存到BytesIO个对象,然后压缩这些字节缓冲区。我已将您链接到Python 3文档,但这些功能也可在Python 2中使用。

答案 1 :(得分:2)

如果您要保存pngzip,可能出于调试目的,可以执行类似zipfile的操作:

import zipfile

zf = zipfile.ZipFile('myzip.zip', mode='w')

zf.write('image1.png')
zf.write('image2.png')
# ...

zf.close()