我想使用方法 drawImage 将使用 matplotlib 生成的图形添加到 reportlab 画布,而不必先将图形保存到硬盘驱动器。
我的问题与: ReportLab 是否有可流动的 matplotlib?,很好地解决了。但是,我不希望使用 DocTemplates、Stories、Flowables 等。如前所述,我想使用 drawImage 将其放在画布中的某个位置。
我尝试使用以下方法将 matplotlib 图转换为 PIL 图像:
2) http://matplotlib.org/faq/howto_faq.html#matplotlib-in-a-web-application-server
例如,一些无法工作的代码是:
import Image
import matplotlib.pyplot as plt
import cStringIO
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch, cm
fig = plt.figure(figsize=(4, 3))
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
imgdata = cStringIO.StringIO()
fig.savefig(imgdata, format='png')
imgdata.seek(0) # rewind the data
im = Image.open(imgdata)
c = canvas.Canvas('test.pdf')
#c.drawImage(imgdata, cm, cm, inch, inch)
c.drawImage(im, cm, cm, inch, inch)
c.save()
尝试绘制imgdata
会导致错误:
AttributeError: 'cStringIO.StringO' object has no attribute 'rfind'
虽然绘图im
给出:
AttributeError: rfind
有人现在如何解决这个问题?任何帮助将不胜感激。