python绘图输出到网页_python画图嵌入html

# -*- coding=utf-8 -*-

import matplotlib

import matplotlib.pyplot as plt

from io import BytesIO

import base64

import matplotlib.patches as mpatches

import time

def render_picture(xlist, ylist, debugflag=False):

"""样式"""

plt.rcParams['font.family']=['Microsoft YaHei']

if not debugflag:

matplotlib.use('Agg') #绘图开关

patch = mpatches.Patch(color='blue', label='IPhoneX')

plt.legend(handles=[patch])

now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

plt.title('%s 时间统计 机器编号#16'%now)

#保证x与y能够对齐

minlen = min(len(xlist), len(ylist))

plt.tick_params(axis='x', rotation=30)

plt.plot(xlist[:minlen], ylist[:minlen], 'b-^')

plt.ylabel('单位/s')

"""数值显示"""

for x,y in list(zip(xlist[:minlen], ylist[:minlen])):

plt.text(x, y+5, y, ha='center', va='baseline')

"""转换为html"""

sio = BytesIO()

plt.savefig(sio, format='png')

data = base64.encodebytes(sio.getvalue()).decode()

html = '''

'''.format(data)

if debugflag:

plt.show()

plt.close()

return html

if "__main__" == __name__:

"""数据"""

xlist = ['Fiber', 'Bootp', 'Carr', 'STA',

'CFGFinish', 'mcs', 'soc', 'RfConfig',

'pa', ]

ylist = [277, 282, 314, 318,

324, 357, 416, 456,

496]

print(render_picture(xlist,ylist,True))