如何在Dash服务启动时将指定图表保存为图片
在Dash启动时自动保存指定图表为图片
要实现Dash服务器启动时自动将serious-chart的图表保存为图片,可借助Plotly的plotly.io模块完成,同时需确保启动时能生成初始图表。以下是修改后的完整方案:
核心步骤
- 导入
plotly.io模块用于图表保存; - 给输入组件
input-bar设置初始值,保证启动时回调能触发生成图表; - 在启动服务器前,手动调用回调函数生成初始图表并保存。
修改后的完整代码
import dash from dash import html, dcc, Input, Output import plotly.io as pio app = dash.Dash(__name__) app.layout = html.Div( children=[ dcc.Input( id='input-bar', value='默认值', # 设置输入组件初始值,确保启动时回调触发 type='text' ), dcc.Graph( id='serious-chart', style={ "width": '1000px', 'height': '500px', } ), ],style={'position':'absolute', 'width':'160vh', 'height':'55vh', 'top': '142%', 'left': '50%', 'border': '1px solid black', 'border-radius':'10px', "transform": "translate(-50%, -50%)", } ) @app.callback( Output(component_id='serious-chart',component_property='figure'), Input(component_id='input-bar',component_property='value'), ) def returnCharts(value): """ 这里替换成你的实际图表生成逻辑 """ fig = { 'data': [{'x': ['类别1', '类别2', '类别3'], 'y': [5, 3, 7], 'type': 'bar'}], 'layout': {'title': f'基于[{value}]生成的图表'} } return fig if __name__ == '__main__': # 获取初始图表并保存 initial_fig = returnCharts('默认值') # 传入input-bar的初始值 # 保存为PNG格式,路径可自定义 pio.write_image(initial_fig, 'serious-chart.png', format='png', width=1000, height=500) # 若需保存JPEG格式,替换为下面一行(需提前安装kaleido依赖:pip install kaleido) # pio.write_image(initial_fig, 'serious-chart.jpg', format='jpeg', width=1000, height=500) app.run_server(debug=True)
注意事项
- 若
input-bar是下拉框等其他组件,只需对应设置它的value初始值即可; pio.write_image支持指定图片宽高,和图表的style保持一致可保证保存的图片尺寸匹配;- 保存JPEG格式需安装
kaleido依赖,执行pip install kaleido即可完成安装。
内容的提问来源于stack exchange,提问作者kollo
相关产品推荐
相关产品推荐

