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:

1)http://www.icare.univ-lille1.fr/wiki/index.php/How_to_convert_a_matplotlib_figure_to_a_numpy_array_or_a_PIL_image

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.

questionAnswers(1)

yourAnswerToTheQuestion