侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

django+echart数据动态显示的例子

框架(架构)  /  管理员 发布于 7年前   175

目标:从plc采集数据到数据库,利用echart绘制实时动态曲线。

1 思路

- django定时执行任务,将数据推送到echart。

- 前端定时读取后端数据,并显示到echart上。

第一种思路貌似走不通,主要考虑第二种方式。

第二种方式首先想到的是利用javascript直接读取数据库,并定时更新echart曲线。

后来了解js只是前端语言,没有访问数据库的能力,因此最后转向ajax。

AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

这个正是我需要的功能。

2、任务分解

- echart动态曲线显示如何实现(官方有例程)

- ajax如何使用(runoob ajax教程)

- django后台数据准备

3、执行

ajax.html

<!DOCTYPE html><html> <head> {% load static %}<script src="https:/article/{% static 'myapp/json2.js'%}"></script><script src="https:/article/{% static 'myapp/echarts.js'%}"></script><script src="https:/article/{% static 'myapp/matplotlib.js'%}"></script> <meta charset="utf-8"> </head> <body> <div id="main" style="background-color:#eceaea; width: 800px; height:600px;"></div> <div id="myDiv"><h2>使用 AJAX 修改该文本内容</h2></div><button type="button" οnclick="loadXMLDoc()">修改内容</button>   <script>var json = {{myContext | safe}}var jstr = JSON.stringify(json)var option = JSON.parse(jstr)// console.log(option) <!-- 为ECharts准备一个具备大小(宽高)的Dom -->// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'), 'matplotlib'); // 使用刚指定的配置项和数据显示图表。myChart.setOption(option);  function loadXMLDoc() {var xmlhttp;if (window.XMLHttpRequest) {// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码xmlhttp = new XMLHttpRequest();} else {// IE6, IE5 浏览器执行代码xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}xmlhttp.onreadystatechange = function() {if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {//document.getElementById("myDiv").innerHTML=xmlhttp.responseText;//content = "{{ myContext }}";//console.log(content) //var json = xmlhttp.responseText;//var jstr = JSON.stringify(json)option = JSON.parse(xmlhttp.responseText) // 使用刚指定的配置项和数据显示图表。myChart.setOption(option);//console.log(option); }}xmlhttp.open("GET", "/myapp/mytext", true);xmlhttp.send();}  setInterval(loadXMLDoc, 500);</script> </body> </html>

django后台程序

def mytext(request):  #df = pd.read_csv(r'E:\mywebsite\ui\myapp\xx.csv')   import random   # dfx = pd.DataFrame()  # dfx['a'] = ['2017-08-08','2017-08-09','2017-08-10']  # dfx['b'] = [random.random(),random.random(),random.random()]  # dfx['c'] = [random.random(),random.random(),random.random()]  #  # dfx['a'] = pd.to_datetime(dfx.a)  #  # dfx = dfx.set_index('a')    import sqlite3  conn = sqlite3.connect(r"E:\01_Lab\L02_Ads\practise\ads_sample\multi_freq_data\multi_freq_data\bin\x86\Debug\db_all.db")  df = pd.read_sql('select * from buffer',conn)  df = df.set_index(pd.to_datetime(df.TimeStamp))  dfn = pd.DataFrame()  dfn['ws'] = df.grWindSpeed.astype(float)   dfn = dfn.tail(500)   option = de.eplot(dfn,1)  str_option = json.dumps(option)  context = {"myContext": str_option}   #return render(request,'myapp/a.html',context)  return HttpResponse(str_option)  def test_ajax(request):   import sqlite3  conn = sqlite3.connect(r"E:\01_Lab\L02_Ads\practise\ads_sample\multi_freq_data\multi_freq_data\bin\x86\Debug\db_all.db")  df = pd.read_sql('select * from buffer',conn)  df = df.set_index(pd.to_datetime(df.TimeStamp))  dfn = pd.DataFrame()  dfn['ws'] = df.grWindSpeed.astype(float)   dfn = dfn.tail(500)   option = de.eplot(dfn,1)  str_option = json.dumps(option)  context = {"myContext": str_option}    #context = {"myContext": {'a':[1,2],'b':[3,4]}}  return render(request, 'myapp/ajax.html', context)

前端通过访问mytext函数获取到一个字符串,通过json.parse()转为echart对象。

最后,利用js定时功能setInterval(func1,1000)定时功能,定时读取数据并更新echart图表。

以上这篇django+echart数据动态显示的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


  • 上一条:
    Django实现发送邮件找回密码功能
    下一条:
    Django中create和save方法的不同
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Filament v3.1版本发布(0个评论)
    • docker + gitea搭建一个git服务器流程步骤(0个评论)
    • websocket的三种架构方式使用优缺点浅析(0个评论)
    • ubuntu20.4系统中宿主机安装nginx服务,docker容器中安装php8.2实现运行laravel10框架网站(0个评论)
    • phpstudy_pro(小皮面板)中安装最新php8.2.9版本流程步骤(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2018-05
    • 2020-02
    • 2020-03
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-11
    • 2021-03
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-08
    • 2023-08
    • 2023-10
    • 2023-12
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客