安裝libpng:
sudo yum install libpng-devel
在安裝完上述包之后,再用pip install就好。
需要的包:
import matplotlib
matplotlib.use('Agg') #不出現畫圖的框
from flask import Flask
app = Flask(__name__)
from io import BytesIO
import os
import base64
畫圖的函數:
def plotTree(s):
fig = plt.figure(1,figsize=(12,6),facecolor='white')
....#一系列畫圖操作
return fig
flask的函數:
@app.route('/', methods=['GET']) #傳入參數
def index(name):
fig=plotTrees(name)
# Encode image to png in base64
sio = BytesIO()
fig.savefig(sio, format='png')
data=base64.encodebytes(sio.getvalue()).decode()
return html.format(data)
main函數:
if __name__ == '__main__':
html = '''
< img src="data:image/png;base64,{}" />
app.run(port=7000,debug=True,threaded=False)
在上述兩步完成以后,其實已經在網頁上顯示圖片了,但是由于matplotlib默認字體不支持中文,所以的中文字都變成了框框。有兩種方法解決:
1. mac上成功解決的方法:
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默認字體
mpl.rcParams['axes.unicode_minus'] = False #解決保存圖像是負號'-'顯示為方塊的問題
2. 該方法我在linux上沒成功,研究半天沒搞明白為啥,不過還好有另外的方法
1)首先在linux找系統的中文字體的.ttc文件
fc-list
如果不幸發現linux上沒有中文字體,沒事,將自己電腦上的字體復制到linux上就行,linux上字體放在/usr/share/fonts上。
2)然后在python中加入代碼,表示matplotlib用該字體,比如我找的是wqy-zenhei/wqy-zenhei.ttc, 那么在python中加入
myfont = FontProperties(fname='/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc’)
然后在所有畫圖中添加字體的函數中,加入 fontproperties=myfont,然后就ok拉。
最后展示下很簡單的結果:
后續有時間的話,會加入互動功能,讓檢查人員能反饋給我,哪條路徑是錯的,哪個node是錯的,哪個葉子結果是錯的等功能。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com