Jay*_*sai 3 html python graph pandas
我正在使用不同的库(例如pandas和numpy)来生成数据框,最终生成图。
现在,我需要将此图显示为HTML格式的简单网页。
注意:我也愿意在HTML页面中从用户那里接受2-3个输入,然后将该数据传递给我的python文件。之后,python文件根据给定的数据(来自HTML页面)生成一个图形,我需要将此图形传递给HTML页面。
df[[main_data]].plot()
Run Code Online (Sandbox Code Playgroud)
在这里,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')
Run Code Online (Sandbox Code Playgroud)
HTML:
<img src='my_plot.png'>
Run Code Online (Sandbox Code Playgroud)
第二种方法是将图形编码为base64。这具有可移植性的优点,以及产生很大的笨拙的html文件的缺点。我不是网络程序员,因此可能还有其他一些我不知道的注意事项
蟒蛇:
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'))
Run Code Online (Sandbox Code Playgroud)
my_html可以传递到您的html文件中,也可以使用jinja2或任何您使用的文件注入。这是关于在HTML /sf/answers/594980151/中查看base64 并将图像编码为base64的SO帖子如何将PIL Image.image对象转换为base64字符串?
小智 6
将 matplotlib 图表导出到 Web 浏览器的最佳方法是使用 mpld3 库。 这是示例。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import mpld3
from mpld3 import plugins
np.random.seed(9615)
# generate df
N = 100
df = pd.DataFrame((.1 * (np.random.random((N, 5)) - .5)).cumsum(0),
columns=['a', 'b', 'c', 'd', 'e'],)
# plot line + confidence interval
fig, ax = plt.subplots()
ax.grid(True, alpha=0.3)
for key, val in df.iteritems():
l, = ax.plot(val.index, val.values, label=key)
ax.fill_between(val.index,
val.values * .5, val.values * 1.5,
color=l.get_color(), alpha=.4)
# define interactive legend
handles, labels = ax.get_legend_handles_labels() # return lines and labels
interactive_legend = plugins.InteractiveLegendPlugin(zip(handles,
ax.collections),
labels,
alpha_unsel=0.5,
alpha_over=1.5,
start_visible=True)
plugins.connect(fig, interactive_legend)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Interactive legend', size=20)
mpld3.show()
Run Code Online (Sandbox Code Playgroud)
https://mpld3.github.io/quickstart.html
| 归档时间: |
|
| 查看次数: |
12974 次 |
| 最近记录: |