Python中Plotly图像转HTML报错:'Figure'无write_html属性求助
解决AttributeError: 'Figure' object has no attribute 'write_html'问题
报错原因
你使用的fig是matplotlib的Figure对象,write_html是Plotly图表对象独有的方法,matplotlib本身没有这个API,因此触发属性错误。
解决方案:针对嵌入邮件的需求,提供两种可行方案
方案1:基于matplotlib生成图片,转Base64直接嵌入HTML邮件
无需生成单独的png或html文件,直接将图片编码为Base64字符串,嵌入邮件的HTML内容中:
import matplotlib.pyplot as plt import base64 from io import BytesIO # 1. 生成你的图表(替换为你的实际绘图代码) fig, ax = plt.subplots() ax.plot([1,2,3], [4,5,1]) # 2. 将图表保存到内存缓冲区,转Base64编码 buffer = BytesIO() fig.savefig(buffer, format='png') buffer.seek(0) img_base64 = base64.b64encode(buffer.getvalue()).decode('utf-8') plt.close(fig) # 释放内存 # 3. 构造邮件HTML内容,嵌入图片 html_content = f""" <html> <body> <p>这是生成的图表:</p> <img src="data:image/png;base64,{img_base64}" alt="统计图表"> </body> </html> """ # 后续将html_content传入你的邮件发送逻辑即可(比如用smtplib+email库)
方案2:改用Plotly生成交互式图表(原生支持write_html)
如果可以切换到Plotly库,它的图表对象原生支持write_html,生成的交互式图表也能嵌入邮件(注意部分邮件客户端可能不支持复杂交互):
import plotly.express as px # 1. 用Plotly生成图表(替换为你的实际绘图代码) fig = px.line(x=[1,2,3], y=[4,5,1]) # 2. 获取HTML字符串直接嵌入邮件 html_content = fig.to_html(full_html=False) # 或保存为HTML文件(若有需要) # fig.write_html("test3.html") # 3. 将html_content整合到邮件HTML模板中发送
内容的提问来源于stack exchange,提问作者Jackeline
相关产品推荐
相关产品推荐

