Django展示可视化图表的多种方式


Posted in Python onApril 08, 2021

1. 前言

大家好,我是安果!

使用 Django 进行 Web 开发时,经常有需要展示图表的需求,以此来丰富网页的数据展示

常见方案包含:Highcharts、Matplotlib、Echarts、Pyecharts,其中后 2 种方案使用频率更高

本篇文章将聊聊 Django 结合 Echarts、Pyecharts 实现图表可视化的具体流程

2. Echarts

Echarts 是百度开源的一个非常优秀的可视化框架,它可以展示非常复杂的图表类型

以展示简单的柱状图为例,讲讲 Django 集成 Echarts 的流程

首先,在某个 App 的 views.py 编写视图函数

当请求方法为 POST 时,定义柱状图中的数据值,然后使用 JsonResponse 返回数据

from django.http import JsonResponse
from django.shortcuts import render


def index_view(request):
    if request.method == "POST":

        # 柱状图的数据
        datas = [5, 20, 36, 10, 10, 20]

        # 返回数据
        return JsonResponse({'bar_datas': datas})
    else:
        return render(request, 'index.html', )

在模板文件中,导入 Echarts 的依赖

PS:可以使用本地 JS 文件或 CDN 加速服务

{#导入js和echarts依赖#}
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.0.2/echarts.common.js"></script>

然后,重写 window.onload 函数,发送一个 Ajax 请求给后端,利用 Echarts 将返回结果展示到图表中去

​<script>
    // 柱状图
    function show_bar(data) {

        //控件
        var bar_widget = echarts.init(document.getElementById('bar_div'));

        //设置option
        option = {
            title: {
                text: '简单的柱状图'
            },
            tooltip: {},
            legend: {
                data: ['销量']
            },
            xAxis: {
                type: 'category',
                data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                data: data,
                type: 'bar'
            }]
        };

        bar_widget.setOption(option)
    }
    //显示即加载调用
    window.onload = function () {
        //发送post请求,地址为index(Jquery)
        $.ajax({
            url: "/",
            type: "POST",
            data: {},
            success: function (data) {
                // 柱状图
                show_bar(data['bar_datas']);

                //后端返回的结果
                console.log(data)
            }
        })
    }
</script>

最后,编写路由 URL,运行项目

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('',include('index.urls')),
​    path('admin/', admin.site.urls),
]

发现,首页展示了一个简单的柱状图

Django展示可视化图表的多种方式

更多复杂的图表展示可以参考官方

https://echarts.apache.org/examples/zh/index.html

3. Pyecharts

Pyecharts 是一款使用 Python 对 Echarts 进行再次封装后的开源框架

相比 Echarts,Django 集成 Pyecharts 更快捷、方便

Django 集成 Pyecharts 只需要 4 步

3-1  安装依赖

# 安装依赖
pip(3) install pyecharts

3-2  拷贝 pyecharts 的模板文件到项目下

将虚拟环境中 pyecharts 的模板文件拷贝到项目的模板文件夹下

比如本机路径如下:

/Users/xingag/Envs/xh_log/lib/python3.7/site-packages/pyecharts/render/templates/

Django展示可视化图表的多种方式

3-3  编写视图函数,渲染图表

在视图文件中,使用 pyecharts 库内置的类 Bar 创建一个柱状图

# Create your views here.
from django.http import HttpResponse
from jinja2 import Environment, FileSystemLoader
from pyecharts.globals import CurrentConfig

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

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


# http://127.0.0.1:8000/demo/
def index(request):
    c = (
        Bar()
            .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
            .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
            .add_yaxis("商家B", [15, 25, 16, 55, 48, 8])
            .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
    )
    return HttpResponse(c.render_embed())

3-4  运行项目

运行项目,生成的柱状图如下:

Django展示可视化图表的多种方式

这只是最简单的使用实例,更多复杂的图表及前后端分离、更新的例子

可以参考官网:

https://pyecharts.org/#/zh-cn/web_django?id=django-前后端分离

4. 最后

文中介绍了 Django 快速集成 Echarts 和 Pyecharts 的基本步骤

实际项目中,一些复杂的图表、前后端分离数据更新可以参考官网去拓展

源码:https://github.com/xingag/python_web

以上就是Django展示可视化图表的多种方式的详细内容,更多关于Django 可视化图表的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python与shell的3种交互方式介绍
Apr 11 Python
详解Python中contextlib上下文管理模块的用法
Jun 28 Python
Python序列操作之进阶篇
Dec 08 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
Django使用Celery异步任务队列的使用
Mar 13 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
Python实现的简单计算器功能详解
Aug 25 Python
Python正则表达式匹配日期与时间的方法
Jul 07 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
python 将html转换为pdf的几种方法
Dec 29 Python
python基础之模块的导入
Oct 24 Python
python tkinter模块的简单使用
python如何在word中存储本地图片
python 下载文件的几种方式分享
Apr 07 #Python
完美处理python与anaconda环境变量的冲突问题
python 如何用map()函数创建多线程任务
python requests模块的使用示例
Apr 07 #Python
Python 使用dict实现switch的操作
Apr 07 #Python
You might like
PHP错误提示的关闭方法详解
2013/06/23 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
Javascript学习笔记 delete运算符
2011/09/13 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
详解python之配置日志的几种方式
2017/05/22 Python
OpenCV 边缘检测
2019/07/10 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
公务员个人自我评价分享
2013/11/06 职场文书
机械专业毕业生推荐信范文
2013/11/25 职场文书
工作态度检讨书
2014/02/11 职场文书
医学生求职自荐书
2014/06/12 职场文书
学校节能减排方案
2014/06/13 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
遗嘱格式范本
2015/08/07 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js