如何在循环中保存并拼接Plotly Express生成的图像?
解决方案
你可以直接用Plotly内置的文件保存方法替换掉fig.show(),以下是两种常用方式:
1. 保存为交互式HTML文件
HTML格式会保留图表的交互功能(比如缩放、悬停查看数据),无需额外依赖:
# 替换原代码中的fig.show() fig.write_html(f"frame_chart_{i}.html")
文件名里加入循环变量i,避免每次循环覆盖之前的文件。
2. 保存为静态图片(PNG/JPG/SVG等)
如果需要静态格式的图片,使用fig.write_image(),但需要先安装依赖库kaleido(官方推荐替代已停止维护的orca):
pip install kaleido
然后替换代码:
# 保存为PNG图片,文件名包含当前循环的frame区间标识 fig.write_image(f"frame_chart_{i}.png") # 也可以保存为其他格式: # fig.write_image(f"frame_chart_{i}.jpg") # fig.write_image(f"frame_chart_{i}.svg")
完整修改后的代码
import plotly.express as px import pandas as pd # 补充原代码缺失的pandas导入 for i in range(0, max(df['frame']), 30): df1 = df[df['frame'].between(i, i + 30)] df2 = df[df['frame'].between(i - 30, i)] df3 = pd.concat([df1, df2[df2.id.isin(df1.id)]], axis=0) fig = px.line(df1, x='smooth_y', y='smooth_x', color='id') # 选择一种保存方式即可 fig.write_html(f"frame_chart_{i}.html") # fig.write_image(f"frame_chart_{i}.png")
内容的提问来源于stack exchange,提问作者JN1997
相关产品推荐
相关产品推荐

