前几篇记录了最简单的一些图像的生成,不过,最终我还是想要将这个数据可视化功能,做进我的网站里面,和web进行交互。
搜索了一下,发现pyplot无法直接和web进行交互,并且在matplotlib里面的教程,也是通过Figure类进行web交互。
另外网上还有一种做法,是通过将数据可视化的结果存为图片后保存在服务器上,最后调用图片,虽然效果可以达到,但是我想要的结果,是一个“动态”的效果,每次都去查询数据并进行生成。
所以,跟着基础教程里的内容来做一遍,教程里是拿Flask来测试,不过也大同小异。
1:Views函数
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: 效果图
这样,每个球队的点的数据,就都可以显示了,目前每个球队的名字显示还有问题,后期再修改。