How to get python graph output into html webpage directly

前端 未结 4 1794
别跟我提以往
别跟我提以往 2021-02-14 11:20

I am using different libraries like pandas and numpy for generating a dataframe, which eventually generate a graph.

Now, I need to show this graph into a simple webpage

4条回答
  •  一向
    一向 (楼主)
    2021-02-14 11:47

    This depends somewhat on what you mean by showing the graph as html. I can see a couple ways, the first and simplest is to save the figure as a png and then supply the path to the file in the html:

    Python code:

    import pandas as pd
    import matplotlib.pyplot as plt
    
    s = pd.Series([1, 2, 3])
    fig, ax = plt.subplots()
    s.plot.bar()
    fig.savefig('my_plot.png')
    

    HTML:

    
    

    The second way would be to encode the figure as base64. This has the advantage of being portable, and the disadvantage of making very large unwieldy html files. I am not a web programmer, so there may be other caveats as well that I am not aware of

    python:

    import io
    import base64
    
    def fig_to_base64(fig)
        img = io.BytesIO()
        fig.savefig(img, format='png',
                    bbox_inches='tight')
        img.seek(0)
    
        return base64.b64encode(img.getvalue())
    
    encoded = fig_to_base64(fig)
    my_html = ''.format(encoded.decode('utf-8'))
    

    my_html can be passed into you html file, or you can inject it with jinja2 or whatever you use. Here is SO post regarding viewing base64 in html https://stackoverflow.com/a/8499716/3639023 and encoding images as base64 How to convert PIL Image.image object to base64 string?

提交回复
热议问题