Python Dash独立HTML文件与Plotly相同

Python Dash独立HTML文件与Plotly相同,python,html,plotly,plotly-dash,Python,Html,Plotly,Plotly Dash,我通常使用Plotly进行绘图,并将其保存为独立的HTML文件,这非常方便与同事共享,并“冻结”正在显示的数据。这是我举的一个例子 plotly.offline.plot( plotly_plot, filename = 'standalone great plot.html', ) 现在我想用一个非常简单的Dash应用程序做同样的事情,它根本没有服务器端的要求,它只是一堆绘出的图形和一些文本。我该怎么做 我想要的例子 考虑中显示的第一个示例,为了方便起见,我将其复制粘贴到此

我通常使用Plotly进行绘图,并将其保存为独立的HTML文件,这非常方便与同事共享,并“冻结”正在显示的数据。这是我举的一个例子

plotly.offline.plot(
    plotly_plot, 
    filename = 'standalone great plot.html',
)
现在我想用一个非常简单的Dash应用程序做同样的事情,它根本没有服务器端的要求,它只是一堆绘出的图形和一些文本。我该怎么做

我想要的例子 考虑中显示的第一个示例,为了方便起见,我将其复制粘贴到此处:

# -*- coding: utf-8 -*-

# Run this app with `python app.py` and
# visit http://127.0.0.1:8050/ in your web browser.

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px
import pandas as pd

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

# assume you have a "long-form" data frame
# see https://plotly.com/python/px-arguments/ for more options
df = pd.DataFrame({
    "Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"],
    "Amount": [4, 1, 2, 2, 4, 5],
    "City": ["SF", "SF", "SF", "Montreal", "Montreal", "Montreal"]
})

fig = px.bar(df, x="Fruit", y="Amount", color="City", barmode="group")

app.layout = html.Div(children=[
    html.H1(children='Hello Dash'),

    html.Div(children='''
        Dash: A web application framework for Python.
    '''),

    dcc.Graph(
        id='example-graph',
        figure=fig
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)
当我使用Python运行此程序,然后在浏览器中打开时,我看到:

从图中可以看出,这基本上是一个带有文字的单一图形。因此,必须能够以某种方式生成包含此内容的独立HTML文件


我想用这个复制plotly.offline.plot的行为。我怎么做?我试过做“文件”→ “在我的web浏览器中将页面另存为”,但生成的HTML无法显示,因为服务器(Python
app.py
文件)未运行。

当前无法将绘图保存到HTML文件中


您无法生成独立的HTML。Dash不直接在HTML中放置数据和绘图。它只放JavaScript代码,以后从服务器读取布局、数据和绘图。这一定是可能的,最复杂的组件是绘图,我已经将其保存为独立的HTML。剩下的只是一些嵌入了绘图的静态文本。但dash不像在普通绘图中那样使用它。它只向浏览器发送JavaScript代码——该代码向服务器发送数据请求——布局为JSON数据——并使用它生成页面。您必须删除所有JavaScript并将所有代码与数据放在一起,因此您必须从头重写所有代码。