前幾篇記錄了最簡單的一些圖像的生成,不過,最終我還是想要將這個數(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ù),就都可以顯示了,目前每個球隊的名字顯示還有問題,后期再修改。

效果圖