最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django+echart數(shù)據(jù)動態(tài)顯示的例子

 更新時間:2019年08月12日 12:01:23   作者:inch2006  
今天小編就為大家分享一篇django+echart數(shù)據(jù)動態(tài)顯示的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

目標:從plc采集數(shù)據(jù)到數(shù)據(jù)庫,利用echart繪制實時動態(tài)曲線。

1 思路

- django定時執(zhí)行任務,將數(shù)據(jù)推送到echart。

- 前端定時讀取后端數(shù)據(jù),并顯示到echart上。

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

第二種方式首先想到的是利用javascript直接讀取數(shù)據(jù)庫,并定時更新echart曲線。

后來了解js只是前端語言,沒有訪問數(shù)據(jù)庫的能力,因此最后轉(zhuǎn)向ajax。

AJAX 最大的優(yōu)點是在不重新加載整個頁面的情況下,可以與服務器交換數(shù)據(jù)并更新部分網(wǎng)頁內(nèi)容。

這個正是我需要的功能。

2、任務分解

- echart動態(tài)曲線顯示如何實現(xiàn)(官方有例程)

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

- django后臺數(shù)據(jù)準備

3、執(zhí)行

ajax.html

<!DOCTYPE html>
<html>
 
<head>
 
	{% load static %}
	<script src="{% static 'myapp/json2.js'%}"></script>
	<script src="{% static 'myapp/echarts.js'%}"></script>
	<script src="{% 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 修改該文本內(nèi)容</h2></div>
	<button type="button" οnclick="loadXMLDoc()">修改內(nèi)容</button>
 
 
 
	<script>
		var json = {{myContext | safe}}
		var jstr = JSON.stringify(json)
		var option = JSON.parse(jstr)
		// console.log(option)
 
		<!-- 為ECharts準備一個具備大?。▽捀撸┑腄om -->
		// 基于準備好的dom,初始化echarts實例
		var myChart = echarts.init(document.getElementById('main'), 'matplotlib');
 
		// 使用剛指定的配置項和數(shù)據(jù)顯示圖表。
		myChart.setOption(option);
 
 
		function loadXMLDoc() {
			var xmlhttp;
			if (window.XMLHttpRequest) {
				// IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執(zhí)行代碼
				xmlhttp = new XMLHttpRequest();
			} else {
				// IE6, IE5 瀏覽器執(zhí)行代碼
				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)
 
					// 使用剛指定的配置項和數(shù)據(jù)顯示圖表。
					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函數(shù)獲取到一個字符串,通過json.parse()轉(zhuǎn)為echart對象。

最后,利用js定時功能setInterval(func1,1000)定時功能,定時讀取數(shù)據(jù)并更新echart圖表。

以上這篇django+echart數(shù)據(jù)動態(tài)顯示的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • pandas DataFrame mask的具體使用

    pandas DataFrame mask的具體使用

    pandas.DataFrame.mask方法提供了一種靈活的方式來根據(jù)條件篩選和替換 DataFrame中的元素,本文主要介紹了pandas DataFrame mask的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • python操作redis方法總結

    python操作redis方法總結

    本篇文章給大家總結了python操作redis的實際方法和實例代碼,有興趣的朋友參考學習下。
    2018-06-06
  • python3 與python2 異常處理的區(qū)別與聯(lián)系

    python3 與python2 異常處理的區(qū)別與聯(lián)系

    這篇文章主要介紹了python3 與python2 異常處理的區(qū)別與聯(lián)系的相關資料,需要的朋友可以參考下
    2016-06-06
  • Python安裝并操作redis實現(xiàn)流程詳解

    Python安裝并操作redis實現(xiàn)流程詳解

    這篇文章主要介紹了Python安裝并操作redis實現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 使用Python paramiko模塊利用多線程實現(xiàn)ssh并發(fā)執(zhí)行操作

    使用Python paramiko模塊利用多線程實現(xiàn)ssh并發(fā)執(zhí)行操作

    ssh是一個協(xié)議,OpenSSH是其中一個開源實現(xiàn),paramiko是Python的一個庫,實現(xiàn)了SSHv2協(xié)議(底層使用cryptography)。這篇文章主要介紹了使用Python paramiko模塊利用多線程實現(xiàn)ssh并發(fā)執(zhí)行操作,需要的朋友可以參考下
    2019-12-12
  • python3 實現(xiàn)一行輸入,空格隔開的示例

    python3 實現(xiàn)一行輸入,空格隔開的示例

    今天小編就為大家分享一篇python3 實現(xiàn)一行輸入,空格隔開的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 如何使用virtualenv管理python環(huán)境

    如何使用virtualenv管理python環(huán)境

    這篇文章主要介紹了如何使用virtualenv管理python環(huán)境,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • python中計算一個列表中連續(xù)相同的元素個數(shù)方法

    python中計算一個列表中連續(xù)相同的元素個數(shù)方法

    今天小編就為大家分享一篇python中計算一個列表中連續(xù)相同的元素個數(shù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python列表去重的幾種方法整理

    Python列表去重的幾種方法整理

    這篇文章介紹了Python列表去重的幾種方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Python?jieba庫的安裝詳細圖文教程

    Python?jieba庫的安裝詳細圖文教程

    jieba庫的作用主要用于中文分詞,是一種不錯的中文分詞組件,下面這篇文章主要給大家介紹了關于Python?jieba庫安裝的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03

最新評論

前郭尔| 昌图县| 罗田县| 都兰县| 唐海县| 广南县| 溧水县| 邵武市| 海安县| 克什克腾旗| 昌乐县| 淳化县| 庆元县| 炎陵县| 若尔盖县| 随州市| 库车县| 容城县| 韩城市| 柯坪县| 和平县| 舞阳县| 恩平市| 伊金霍洛旗| 惠来县| 江山市| 华容县| 姚安县| 甘德县| 西吉县| 武宣县| 常德市| 金山区| 民权县| 高邮市| 弋阳县| 本溪市| 珠海市| 安阳县| 芜湖市| 芜湖市|