初學(xué) Matplotlib之 與Web的交互

前幾篇記錄了最簡單的一些圖像的生成,不過,最終我還是想要將這個數(shù)據(jù)可視化功能,做進我的網(wǎng)站里面,和web進行交互。

搜索了一下,發(fā)現(xiàn)pyplot無法直接和web進行交互,并且在matplotlib里面的教程,也是通過Figure類進行web交互。
另外網(wǎng)上還有一種做法,是通過將數(shù)據(jù)可視化的結(jié)果存為圖片后保存在服務(wù)器上,最后調(diào)用圖片,雖然效果可以達到,但是我想要的結(jié)果,是一個“動態(tài)”的效果,每次都去查詢數(shù)據(jù)并進行生成。

所以,跟著基礎(chǔ)教程里的內(nèi)容來做一遍,教程里是拿Flask來測試,不過也大同小異。

1:Views函數(shù)

import base64
from io import BytesIO
from matplotlib.figure import Figure
# Create your views here.

def test_page(request):
    fig = Figure()
    ax = fig.subplots()
    ax.plot([1, 2])
    buf = BytesIO()
    fig.savefig(buf, format='png')
    data = base64.b64encode(buf.getbuffer()).decode('ascii')
    return HttpResponse(f"<img src='data:image/png;base64,{data}'/>")

2: 效果圖

這樣,每個球隊的點的數(shù)據(jù),就都可以顯示了,目前每個球隊的名字顯示還有問題,后期再修改。


效果圖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容