Como desenhar uma figura de matplotlib em uma tela de relatório?
Gostaria de adicionar uma figura gerada com o matplotlib a uma tela do reportlab usando o método drawImage e sem ter que salvar a figura no disco rígido primeiro.
Minha pergunta está relacionada a:Existe um flowplatlib para o ReportLab?, que foi muito bem resolvido. No entanto, eu não quero usar DocTemplates, Stories, Flowables, etc. Como dito, eu gostaria de colocá-lo em uma determinada posição na tela usando drawImage.
Eu tentei converter a figura de matplotlib para uma imagem PIL usando os seguintes métodos:
2)http://matplotlib.org/faq/howto_faq.html#matplotlib-in-a-web-application-server
Por exemplo, algum código que não funciona é:
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()
Tentando desenharimgdata
resulta no erro:
AttributeError: 'cStringIO.StringO' object has no attribute 'rfind'
Enquanto desenhaim
dá:
AttributeError: rfind
Alguém agora como resolver esse problema? Qualquer ajuda seria muito apreciada.