四时宝库

程序员的知识宝库

Python动态绘图的方法:利用flask和pyechart组合-web发布图

方法五:利用flask和pyechart组合-web发布图形

① 首先要安装flask框架

② 在windows的命令行执行:python -m venv myenv

③ 进入虚拟环境命令的脚本文件夹,激活虚拟环境

④ 然后安装flask包

⑤ 建立html模板目录结构

两个文件的代码如下

python程序如下

import random

from pyecharts import Scatter3D

from flask import Flask, render_template

app = Flask(__name__)

REMOTE_HOST = "https://pyecharts.github.io/assets/js"

@app.route("/")

def hello():

s3d = scatter3d()

return render_template(

"pyecharts.html",

myechart=s3d.render_embed(),

host=REMOTE_HOST,

script_list=s3d.get_js_dependencies(),

)

def scatter3d():

data = [generate_3d_random_point() for _ in range(80)]

range_color = [

"#313695",

"#4575b4",

"#74add1",

"#abd9e9",

"#e0f3f8",

"#fee090",

"#fdae61",

"#f46d43",

"#d73027",

"#a50026",

]

scatter3D = Scatter3D("3D scattering plot demo", width=1200, height=600)

scatter3D.add("", data, is_visualmap=True, visual_range_color=range_color)

return scatter3D

def generate_3d_random_point():

return [

random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)

]

if __name__=='__main__':

app.run(debug=True)

html文件的内容如下

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Proudly presented by ECharts</title>

{% for jsfile_name in script_list %}

<script src="{{ host }}/{{ jsfile_name }}.js"></script>

{% endfor %}

</head>

<body>

{{ myechart|safe }}

</body>

</html>

⑥ 在pycharm中运行server.py文件,在浏览器中访问127.0.0.1:5000即可

这是官方的例子。

在此基础上修改为折线图

from pyecharts import Line #引入不同的图形模块

from flask import Flask, render_template

import numpy as np

app = Flask(__name__)

REMOTE_HOST = "https://pyecharts.github.io/assets/js" #远程js库,可以下载全部到自己的服务器上,修改这个路径就可以了

@app.route("/")

def hello():

myline=mydata_line() #这个地方就是基本的pyechart图形绘制,返回一个图形对象

return render_template(

"pyecharts.html", #模板的名称,模板默认位置在templates文件夹下

myechart=myline.render_embed(), #给模板传递echart图形参数

host=REMOTE_HOST, #js库的位置

script_list=myline.get_js_dependencies(), #给模块传echart图形的js代码,我理解的,不一定对

)

#此函数就是普通的画图函数,数据怎么处理都可以,利用基本知识

def mydata_line():

x=list(range(50))

y1=list(np.random.random(50))

y2=list(np.random.random(50))

line=Line("折线图flask")

line.add("A",x,y1)

line.add("B",x,y2)

#line.render("myechart001.html") # 生成html文件,这是静态方法生成网页

return line

if __name__=='__main__':

app.run(debug=True)

html文件的内容不变,还利用官方例子的内容。

这种方法,比较简单可以快速的发布html格式的网页,但是问题是html网页的内容比较单一,需要根据需求进行修改,但是应用的案例比较少,属于小众方法。

主要问题:没有方法实现动态刷新图形图形的方法,图形都是利用已知的数据,生成静态的html网页进行发布,因此不适用动态刷新的方法

扩展思路,直接利用底层得echart进行数据展示

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接