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 = '''
       <html>
           <body>
               <img src="data:image/png;base64,{}" />
           </body>
        <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))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM