You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:25:47