【python 可视化】pyecharts + Django 使用指南

本指南按照 Django 官方教程,通过完成一个 Django 小项目来说明如何在 Django 中使用 pyecharts。如果对 Django 还不太熟悉的开发者,可仔细阅读官方提供的最新文档。
Step 0: 使用新的 virtualenv 环境

建议开发者使用 1.11.4 版本的 Django

$ virtualenv --no-site-packages pyecharts-env
$ source pyecharts-env/bin/activate
$ pip install django==1.11.4
$ pip install pyecharts

Step 1: 新建一个 django 项目

$ django-admin startproject myechartsite

创建一个应用程序

$ python manage.py startapp myfirstvis
$ ls
db.sqlite3      manage.py       myechartsite    myfirstvis

在 myechartsite/settings.py 中注册应用程序

# myechartsite/settings.py
...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myfirstvis'  # <---
]
...

我们先编辑 urls.py.这文件在 Django 里的功能是把前段的 HTTP 需求和后台服务函数挂钩。在 Step3,我们再引入后端服务函数

# myfirstvis/urls.py
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]
在 myechartsite/urls.py 中新增 'myfirstvis.urls'

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

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

Step 2: 处理视图功能部分

将下列代码保存到 myfirstvis/views.py 中。

from __future__ import unicode_literals
import math

from django.http import HttpResponse
from django.template import loader
from pyecharts import Line3D

from pyecharts.constants import DEFAULT_HOST


def index(request):
    template = loader.get_template('myfirstvis/pyecharts.html')
    l3d = line3d()
    context = dict(
        myechart=l3d.render_embed(),
        host=DEFAULT_HOST,
        script_list=l3d.get_js_dependencies()
    )
    return HttpResponse(template.render(context, request))


def line3d():
    _data = []
    for t in range(0, 25000):
        _t = t / 1000
        x = (1 + 0.25 * math.cos(75 * _t)) * math.cos(_t)
        y = (1 + 0.25 * math.cos(75 * _t)) * math.sin(_t)
        z = _t + 2.0 * math.sin(75 * _t)
        _data.append([x, y, z])
    range_color = [
        '#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf',
        '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
    line3d = Line3D("3D line plot demo", width=1200, height=600)
    line3d.add("", _data, is_visualmap=True,
               visual_range_color=range_color, visual_range=[0, 30],
               is_grid3D_rotate=True, grid3D_rotate_speed=180)
    return line3d

script_list 是 Page() 类渲染网页所需要依赖的 echarts js 库,依赖的库的数量取决于所要渲染的图形种类。

host 是 echarts js 库的地址,默认的地址为 http://chfw.github.io/jupyter-echarts/echarts 当然,如果你愿意你也可以改变这个地址,先克隆 https://github.com/chfw/jupyter-echarts 然后将 echarts 文件夹挂载在你自己的服务器上即可。

Step 3: 为项目提供自己的模板

前面的步骤是按照 tutorial part 1,接下来我们跳到 tutorial part 3

Linux/macos 系统

$ mkdir templates/myfirstvis -p

Windows 系统
在 myfirstvis 目录下,新建 templates/myfirstvis 子目录

myfirstvis 目录

─ myfirstvis
├── admin.py
├── apps.py
├── init.py
├── migrations
│ ├── init.py
├── models.py
├── templates
│ └── myfirstvis
│ └── pyecharts.html
├── tests.py
├── urls.py
└── views.py
将下面 html 模板代码保存为 pyecharts.html,请确保 pyecharts.html 文件的绝对路径为 /myfirstvis/templates/myfirstvis

<!-- myfirstvis/templates/pyecharts.html -->
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>Proudly presented by PycCharts</title>
    {% for jsfile_name in script_list %}
    <script src="{{host}}/{{jsfile_name}}.js"></script>
    {% endfor %}
</head>

<body>
  {{myechart|safe}}
</body>

</html>

Step 4: 运行项目

$ cd myechartsite
$ python manage.py runserver
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

August 08, 2017 - 05:48:38
Django version 1.11.4, using settings 'myechartsite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

访问 http://localhost:8000/myfirstvis/,你就可以看到酷炫的 3D 图了

这里写图片描述

  • 11
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
要实现 Django + Pyecharts + MySQL 前后端分离,需要按照以下步骤进行: 1. 后端 Django + MySQL 的实现 首先,根据需求设计数据库表结构,并使用 Django 自带的 ORM 操作数据库。在 Django 中,可以使用 Django REST framework 进行 API 接口的开发,将数据以 JSON 或 XML 格式返回给前端。 2. 前端 Pyecharts 的实现 在前端页面中,使用 Pyecharts 进行图表的绘制。Pyecharts 是一个基于 Echarts 的 Python 图表库,可以轻松绘制各种类型的图表。需要注意的是,Pyecharts 并不是一个前端框架,而是一种将 Python 代码转换成 JavaScript 代码的工具。 3. 前后端分离的实现 在前后端分离的架构中,前端和后端是分离的两个部分,通过 API 接口进行通信。在 Django 中,可以使用 Django REST framework 进行 API 接口的开发,并将数据以 JSON 格式返回给前端。前端通过 AJAX 调用这些 API 接口,获取数据并绘制图表。 4. 部署 最后,需要将 Django 后端和前端页面部署到不同的服务器上,以实现前后端分离。可以使用 Docker 进行部署,将 Django 应用和前端页面分别打包成 Docker 镜像,并使用 Docker Compose 进行部署管理。 总的来说,实现 Django + Pyecharts + MySQL 前后端分离需要对 DjangoPyecharts、MySQL、Django REST framework 等技术有一定的了解和实践经验。同时,需要注意前后端分离架构的设计和实现,以确保系统的稳定性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东华果汁哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值