在djangoview中显示matplotlib图

时间:2015-08-10 22:04:40

标签: django image matplotlib

我想在django中显示由matplotlib生成的图像。 我有一个有效的解决方案但想要在不写入磁盘的情况下这样做。 这是代码:

def __get_img_data1(): # not working - returns a white blank image
    fig = plt.figure()
    imgdata = StringIO.StringIO()
    fig.savefig(imgdata, format='png')
    imgdata.seek(0)
    content = imgdata.getvalue()
    imgdata.close()
    return content

def __get_img_data2(): # not working - returns a broken image
    fig = plt.figure()
    imgdata = StringIO.StringIO()
    fig.savefig(imgdata, format='png')
    imgdata.seek(0)
    from PIL import Image
    return Image.open(imgdata)

def __get_img_data3(): # working!
    img_file = NamedTemporaryFile(delete=False)
    plt.savefig(img_file.name, dpi=600)
    img_data = open(img_file.name + '.png', 'rb').read()
    os.remove(img_file.name)
    os.remove(img_file.name + '.png')
    return img_data

我采取了上面显示的3种方法。 如何在不写入磁盘的情况下使其工作? 它应该根据文档工作: http://matplotlib.org/faq/howto_faq.html

但它显示一个空的白色图像。

1 个答案:

答案 0 :(得分:0)

呃,我想通了。 问题是我需要在之前获取图形对象进行我的绘图。

这有效:

def __get_png_img_buff(fig):
    buff = StringIO.StringIO()
    fig.savefig(buff, format='png')
    buff.seek(0)
    return buff