前言

为什么将pyecharts与web框架结合使用?因为如果只是单纯的使用pyecharts,我们展示的时候只能将我们的图表生成为静态文件,虽然也在也可以使用iframe等语句嵌入前端页面但是并不方便前后端数据交互。

如果我们在Flask/Django/Tornado/Sanic中使用pyecharts就结合通过这些web框架来实现前后端分离或使用动态更新数据,增量更新数据(比如前端主动向后端进行数据刷新等)等功能。进一步可以购买一个服务器去将项目部署在服务器上,这样就能随时随地展示你的数据分析可视化结果而这一切并不困难。例如我们之前做过疫情可视化网站就是Django+pyecharts实现

本文主要介绍如何在本地结合Flask/Django使用pyecharts。

在Flask中使用

step1

新建一个flask项目


Flask的安装可以使用pip install flask首先我们建立一个文件夹pyecharts-flask-demo然后进入这个这个文件夹中再建一个新的文件夹templates这样我们就为我们接下来的flask项目创建了一个目录。

step2

拷贝pyecharts模版


将 pyecharts 模板,位于官方GitHub中的 pyecharts.render.templates 全部文件拷贝至刚新建的 templates 文件夹

step3

渲染模版


在这一步我们只要在文件夹pyecharts-flask-demo也就是主目录下创建创建一个python脚本命名为server.py并填入以下代码,当然中间的绘图部分代码可以替换为自己的绘图部分代码
from flask import Flask
from jinja2 import Markup, Environment, FileSystemLoader
from pyecharts.globals import CurrentConfig

# 关于 CurrentConfig,可参考 [基本使用-全局变量]
CurrentConfig.GLOBAL_ENV = Environment(loader=FileSystemLoader("./templates"))

from pyecharts import options as opts
from pyecharts.charts import Bar

app = Flask(__name__, static_folder="templates")

#########################以下代码可以替换!!!
def bar_base() -> Bar:
    c = (
        Bar()
        .add_xaxis(["衬衫""羊毛衫""雪纺衫""裤子""高跟鞋""袜子"])
        .add_yaxis("商家A", [52036107590])
        .add_yaxis("商家B", [15251655488])
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
    )
    return c
##########################################
@app.route("/")
def index():
    c = bar_base()
    return Markup(c.render_embed())


if __name__ == "__main__":
    app.run()
此时你的目录应该是这样

step4

启动项目


最后一步就是启动项目,从命令行进入pyecharts-flask-demo文件夹并执行
python server.py

使用浏览器打开 http://127.0.0.1:5000 即可访问服务

此时我们就成功在Flask中使用pyecharts,不过以上操作仅将这个项目部署在本地,当然在服务器中的配置与启动方法完全一样。接下来我们可以利用Flask实现前后端分离或使用动态更新数据,增量更新数据(定时刷新的核心在于 HTML 的setInterval方法)等功能。而这些就交给大家自己探索或关注以后的文章。

在Django中使用

在Django中配置与使用比Flask稍微复杂一点,但是也并不困难!

step1

新建一个Django项目


Django的安装可以使用pip install Django

打开命令行执行下面代码创建一个Django项目目录

django-admin startproject pyecharts_django_demo

然后执行下面代码创建一个app

python manage.py startapp demo

此时我们的目录应该是这样

打开pyecharts_django_demo/settings.py修改下面部分代码来注册应用程序

# pyecharts_django_demo/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'demo'  # <---
]
再编辑demo/urls.py 文件(新建一个文件)
# demo/urls.py
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

再修改pyecharts_django_demo/urls.py 

#pyecharts_django_demo/urls.py
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'demo/', include('demo.urls')) # <---
]


step2

拷贝pyecharts模版


先在 demo 文件夹下新建 templates 文件夹,然后将 pyecharts 模板,位于 pyecharts.render.templates 拷贝至刚新建的 templates 文件夹。此时我们的目录是这样

step3

渲染图表


将下列代码保存到 demo/views.py 中,其中绘图部分可以替换为你的相关代码

from jinja2 import Environment, FileSystemLoader
from pyecharts.globals import CurrentConfig
from django.http import HttpResponse

CurrentConfig.GLOBAL_ENV = Environment(loader=FileSystemLoader("./demo/templates"))

from pyecharts import options as opts
from pyecharts.charts import Bar


def index(request):
    c = (
        Bar()
        .add_xaxis(["衬衫""羊毛衫""雪纺衫""裤子""高跟鞋""袜子"])
        .add_yaxis("商家A", [52036107590])
        .add_yaxis("商家B", [15251655488])
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
    )
    return HttpResponse(c.render_embed())


step4

启动Django项目


在命令行进入主目录执行即可

python manage.py runserver

现在进入http://127.0.0.1:8000/demo 

即可访问服务

接下来就可以结合Django实现前后端分离从而实现定时全量、增量更新图表比如前端主动向后端进行数据刷新等相关功能。


©著作权归作者所有:来自51CTO博客作者mb5fe18e32e4691的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. PHP自定义函数+系统函数库(代码示例)
  2. 如何将smarty安装到MVC架构中(代码示例)
  3. PHP 跨域之header函数(代码示例)
  4. PHP+Ajax实现文章心情投票功能(代码实例)
  5. PHP+jQuery开发简单翻牌抽奖的功能(代码实例)
  6. PHP-Curl模拟HTTPS请求(代码实例)
  7. PHP使用递归按层级查找数据(代码详解)
  8. 关于php多进程编程(代码详解)
  9. 用PHP写一个计算器(附完整代码)

随机推荐

  1. Android基础 : Android(安卓)Content Pro
  2. Android碎笔录2——按键的点击变色和圆角
  3. Android(安卓)从启动到程序运行发生的事
  4. Android(安卓)Studio使用Google Flutter
  5. Android(安卓)中SQLite技术实例详解
  6. android:如何从照片中获取拍摄地址信息
  7. Android之Activities
  8. Android富文本编辑器附源码
  9. Android(安卓)Studio Gradle 增加对.so
  10. Android(安卓)Audio - 支持多个APK同时录