我正在使用 pandas 和 numpy 等不同的库来生成数据框,最终生成图形。
现在,我需要将此图表显示到一个简单的 HTML 网页中。
注意:我也愿意在 HTML 页面中从用户那里获取 2-3 个输入,然后将该数据传递到我的 python 文件。之后,python 文件根据给定的数据(来自 HTML 页面)生成一个图表,我需要将该图表传递给 HTML 页面。
df[[main_data]].plot()
这里,main_data 是变量,其值来自 HTML 页面。我正在 SPYDER 中编写 python 代码。 而且我没有使用任何框架。
最佳答案
这在某种程度上取决于您将图表显示为 html 的含义。我可以看到几种方法,第一种也是最简单的方法是将图形保存为 PNG,然后在 html 中提供文件的路径:
Python代码:
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:
<img src='my_plot.png'/>
第二种方法是将图形编码为 base64。这具有可移植性的优点,以及制作非常笨重的 html 文件的缺点。我不是网络程序员,因此可能还有其他我不知道的注意事项。
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 = '<img src="data:image/png;base64, {}">'.format(encoded.decode('utf-8'))
my_html
可以传递到您的 html 文件中,或者您可以使用 jinja2 或任何您使用的方式注入(inject)它。这是关于在 html 中查看 base64 的 SO 帖子 https://stackoverflow.com/a/8499716/3639023并将图像编码为 base64 How to convert PIL Image.image object to base64 string?
关于python - 如何将python图直接输出到html网页中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49015957/