Django使用echarts进行可视化展示的实践


Posted in Python onJune 10, 2021

本文以学生成绩折线图展示为例

条件准备

  • 电脑上有myslq数据库
  • 有 echarts 的 js 文件

连接mysql

# settings.py 文件

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        # mysql 数据库名
        'NAME': 'chaochao',
        # mysql 登陆用户名
        'USER': 'root',
        # myslq 登陆密码
        'PASSWORD': 'chaochao666',
        'HOST': '',
        'PORT': '',
    }
}

Django 连接 mysql 数据库教程在其他文章中,这里不再细说

导入数据

可以直接在 mysql 数据库中添加数据,也可以使用超级用户在 admin 管理页面中添加数据

# models.py 文件

class Person(models.Model):
    # 姓名 str类型
    name = models.CharField(max_length=20,verbose_name='姓名')
    # 年龄 int型
    age=models.IntegerField(verbose_name='年龄')
    # 成绩 float类型
    score = models.FloatField(verbose_name='成绩')

数据库内容:

Django使用echarts进行可视化展示的实践

使用echarts可视化展示

设置静态文件目录(即 static 目录)

# settings.py 文件

STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)

创建如下目录结构:

Django使用echarts进行可视化展示的实践

js 目录中为 echarts的 js 文件,大家可以在 echarts官网下载自己需要的版本

css 目录中为 展示页面用到的 css 文件

在 echarts 官网找到想展示的实例代码

这里使用的折线图的官网地址为:https://echarts.apache.org/examples/zh/editor.html?c=line-simple

实例代码:

option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
};

index.css 文件内容:

#chart{
    height: 500px;
    width: 500px;
}

echarts 展示的图表需要和 html 中的 div 元素 联系起来,并且该 div 元素必须指定 height 和 width 属性

index.html 文件内容

现在使用的 echarts 官网实例中的静态数据,下面将修改为使用mysql数据库中的数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我的第一个django展示页面</title>
    <link rel="stylesheet" href="/static/css/index.css" rel="external nofollow" >
    <script src="/static/js/echarts.min.js"></script>
</head>
<body>
<h1>学生成绩简单可视化</h1>
<div id="chart"></div>

<script>
    {#初始化 echarts 对象#}
    var mychart = echarts.init(document.getElementById('chart'));
    {#可视化展示选项#}
    var option = {
        xAxis: {
            type: 'category',
            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
            type: 'value'
        },
        series: [{
            data: [820, 932, 901, 934, 1290, 1330, 1320],
            type: 'line'
        }]
    };
    {#将 echarts对象与展示选项结合起来#}
    mychart.setOption(option);

</script>
</body>
</html>

现在使用的静态数据,先来看一下页面效果

Django使用echarts进行可视化展示的实践

已经可以看到图表了

现在,我们来修改为 myslq 数据库中的数据

首先,编写 views.py 文件,将数据库中的数据传到前端页面中

from django.shortcuts import render
from .models import Person

# Create your views here.

def index(request):
    # 查询出Person对象信息,也就是数据表中的所有数据
    # 一行数据就是一个对象,一个格子的数据就是一个对象的一个属性值
    objs = Person.objects.all()

    # locals函数可以将该函数中出现过的所有变量传入到展示页面中,即index.html文件中
    return render(request,'index.html',locals())

Django使用echarts进行可视化展示的实践

修改 index.html 页面,引用数据库中的信息

只需要修改了 js 内容即可,以下为 script标签中的内容

<script>
    {#初始化 echarts 对象#}
    var mychart = echarts.init(document.getElementById('chart'));

    {#首先,声明两个 javascript 的数组#}
    var series_data = [];
    var xAxis_data = [];

    {#使用循环,依次将数据库需要展示的数据添加到刚才声明的数组中#}
    {% for stu in objs %}
        series_data.push({{ stu.score }})
        xAxis_data.push({{ stu.name}})
    {% endfor %}

    {#可视化展示选项#}
    var option = {
        xAxis: {
            type: 'category',
            {#将x轴坐标修改为数据库中的学生姓名#}
            data: xAxis_data
        },
        yAxis: {
            type: 'value'
        },
        series: [{
            {#将y轴的数据修改为数据库中学生的成绩,即score#}
            data: series_data,
            type: 'line'
        }]
    };
    {#将 echarts对象与展示选项结合起来#}
    mychart.setOption(option);

</script>

现在,我们来看一下展示效果

Django使用echarts进行可视化展示的实践

没有图表

不要慌,打开控制台看下报错信息

Django使用echarts进行可视化展示的实践

这是因为Django的模板文件中,js代码接受数据库的数据时,不会判断当前数据的数据类型

也就是这里它把 “超超” 这个字符串当作了变量名

解决办法很简单,在 js 接受数据时添加上一对双引号

<script>
    {#初始化 echarts 对象#}
    var mychart = echarts.init(document.getElementById('chart'));

    {#首先,声明两个 javascript 的数组#}
    var series_data = [];
    var xAxis_data = [];

    {#使用循环,依次将数据库需要展示的数据添加到刚才声明的数组中#}
    {% for stu in objs %}
        series_data.push({{ stu.score }})
        {#注意这里的双引号#}
        xAxis_data.push("{{ stu.name}}")
    {% endfor %}

    {#可视化展示选项#}
    var option = {
        xAxis: {
            type: 'category',
            {#将x轴坐标修改为数据库中的学生姓名#}
            data: xAxis_data
        },
        yAxis: {
            type: 'value'
        },
        series: [{
            {#将y轴的数据修改为数据库中学生的成绩,即score#}
            data: series_data,
            type: 'line'
        }]
    };
    {#将 echarts对象与展示选项结合起来#}
    mychart.setOption(option);

</script>

双引号的位置是:

{% for stu in objs %}
series_data.push({{ stu.score }})
{#注意这里的双引号#}
xAxis_data.push("{{ stu.name}}")
{% endfor %}

Django使用echarts进行可视化展示的实践

现在可以看到,x轴坐标变为了数据库中的学生姓名,y轴变为了数据库中的学生成绩

如果需要使用其他的 echarts 图表进行可视化展示,只需修改 script 中的代码即可

到此这篇关于Django使用echarts进行可视化展示的实践的文章就介绍到这了,更多相关Django echarts可视化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
python基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 Python
用Python实现QQ游戏大家来找茬辅助工具
Sep 14 Python
探究python中open函数的使用
Mar 01 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
Python File(文件) 方法整理
Feb 18 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
基于python的列表list和集合set操作
Nov 24 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 Python
教你如何使用Python Tkinter库制作记事本
Jun 10 #Python
Python中常见的反爬机制及其破解方法总结
Jun 10 #Python
Pytorch可视化的几种实现方法
OpenCV-Python实现怀旧滤镜与连环画滤镜
OpenCV-Python实现轮廓的特征值
Jun 09 #Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 #Python
Python的这些库,你知道多少?
You might like
用PHP和ACCESS写聊天室(三)
2006/10/09 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
PDO::rollBack讲解
2019/01/29 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
python标记语句块使用方法总结
2019/08/05 Python
Python编程中类与类的关系详解
2019/08/08 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
财务经理岗位职责
2013/11/09 职场文书
语文教育专业推荐信范文
2013/11/25 职场文书
经典大学生求职信范文
2014/01/06 职场文书
好军嫂事迹材料
2014/01/15 职场文书
新学期开学寄语
2014/01/18 职场文书
初一科学教学反思
2014/01/27 职场文书
教学个人的自我评价分享
2014/02/16 职场文书
司仪主持词两篇
2014/03/22 职场文书
员工年终考核评语
2014/12/31 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
python process模块的使用简介
2021/05/14 Python