将绘图图保存到 html 文件后,您可以稍后将其重新读取为图吗?

我想编辑数据,可能会在图表中添加更多跟踪。我找到了一种将 html 文件显示为图形的方法,但不能对其进行编辑。

from IPython.display import HTML
HTML(filename='file_name.html')
stack overflow After saving a plotly figure to html file, can you re-read it later as a figure?
原文答案

答案:

作者头像

Normally Plotly JSON should be used for (de)serialisation of charts (e.g. figure.write_json and plotly.read_json). However, if you only have the HTML representation of the chart, the same Plotly JSON is fed to plotly.js there, and it can be extracted.

For the sake of demonstration only. plotly==5.1.0 used.

import json
import re

import plotly.express


def write():
    fig = plotly.express.bar(y=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34])
    fig.write_html('plot.html', full_html=True)
    fig.write_json('plot.json')


def read_from_json():
    return plotly.io.read_json('plot.json')


def read_from_html():
    with open('plot.html') as f:
        html = f.read()
    call_arg_str = re.findall(r'Plotly\.newPlot\((.*)\)', html[-2**16:])[0]
    call_args = json.loads(f'[{call_arg_str}]')
    plotly_json = {'data': call_args[1], 'layout': call_args[2]}    
    return plotly.io.from_json(json.dumps(plotly_json))


if __name__ == '__main__':
    write()
    read_from_json()
    read_from_html()