Python Matplotlib to smtplib

爱⌒轻易说出口 提交于 2019-11-29 02:06:42
thegrinner

You can use figure.savefig() to save your plot to a file. An example where I output a plot to a file:

fig = plt.figure()    
ax = fig.add_subplot(111)

# Need to do this so we don't have to worry about how many lines we have - 
# matplotlib doesn't like one x and multiple ys, so just repeat the x
lines = []
for y in ys:
    lines.append(x)
    lines.append(y)

ax.plot(*lines)

fig.savefig("filename.png")

Then just attach the image to your email (like the recipe in this answer).

It is also possible to do everything in memory saving to a BytesIO buffer and then feeding the payload with it:

buf = io.BytesIO()
plt.savefig(buf, format = 'png')
buf.seek(0)

mail = MIMEMultipart()
...
part = MIMEBase('application', "octet-stream")
part.set_payload( buf.read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % 'anything.png')
mail.attach(part)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!