将pyplot图转换为wand.image图像

时间:2016-03-14 22:07:31

标签: python matplotlib wand

有没有办法将用pyplot.Figure创建的pyplot数字转换为魔杖图像?我尝试使用以下内容无济于事:

image_data = BytesIO()
figure.savefig(image_data, format='png')
image_data.seek(0)
image = Image(file=image_data, resolution=250)

最终目标是将数字列表转换为长png。唯一的另一种方法(丑陋)是转换为pdf然后连接页面。

2 个答案:

答案 0 :(得分:0)

我相信你走在正确的轨道上。在没有看到图的情况下,我认为该问题与使用with关键字保存C结构指针的有关。

image_data = BytesIO()
figure.savefig(image_data, dpi=250, format='png')
image_data.seek(0)
with Image(file=image_data) as img:
    # ... do work
    img.save(filename='/tmp/out.png')

答案 1 :(得分:0)

我试图找出如何做同样的事情。我走了一个兔子洞,有点想我还需要使用PIL(Pillow)来完成这项任务。在前一个答案的帮助下,我能够提出一个完整的例子:

import matplotlib
from io import BytesIO
import numpy
import matplotlib.pyplot as plt
from wand.display import display
from wand.image import Image

plt.plot([1,5,3,2])
plt.ylabel('y axis numbers')
plt.xlabel('x axis numbers')

image_data = BytesIO() #Create empty in-memory file
plt.savefig(image_data, format='png') #Save pyplot figure to in-memory file
image_data.seek(0) #Move stream position back to beginning of file 
img = Image(file=image_data) #Create wand.image
display(img) #Use wand to display the img