【1】数据可视化:基于 Echarts + Python 实现的动态实时大屏 - 互联网企业数据

目录

精彩案例汇总

效果展示

1、首先看动态效果图 

2、再看实时分片数据图

一、 确定需求方案

1、确定产品上线部署的屏幕LED分辨率

2、功能模块

3、部署方式

二、整体架构设计

三、编码实现 (基于篇幅及可读性考虑,此处展示部分关键代码)

1、前端html代码

2、前端js代码

3、后端python代码

四、上线运行

五、源码下载

精彩案例汇总


近年来,数据可视化大屏的出现,掀起一番又一番的浪潮,众多企业主纷纷想要打造属于自己的 “酷炫吊炸天” 的霸道总裁大屏驾驶舱。今天为大家分享的是 【互联网企业数据分析】

之前小伙伴们建议我出一些视频课程来学习Echarts,这样可以更快上手,所以我就追星赶月的录制了《Echarts - 0基础入门课程》Echarts-0基础入门--其他视频教程-编程语言-CSDN程序员研修院 ,希望小伙伴们多多支持。

精彩案例汇总

YYDatav的数据可视化《精彩案例汇总》_YYDataV的博客-CSDN博客

话不多说,开始分享干货,欢迎讨论!微信号: 6550523

效果展示

1、首先看动态效果图 

2、再看实时分片数据图

一、 确定需求方案

1、确定产品上线部署的屏幕LED分辨率

1920px*1080px,F11全屏后占满整屏且无滚动条。其它分辨率也可自适应。

2、功能模块

  • 用户访问来源分析(饼图):  包括搜索引擎,联盟广告,直接访问
  • 访问地区分布(柱状图 + 地图 + 热力图):浙江、上海、广东、北京
  • 年龄分布(饼图):0岁以上、20-29岁、30-39岁、40-49岁、50岁以上
  • 职业分布(饼图):电子商务、教育、IT/互联网、金融、学生、其他
  • 兴趣分布(饼图):汽车、旅游、财经、教育、软件、其他
  • 终端设备分布(线图):Android + iOS移动端设备使用量
  • 频道访问量Top5(柱状图):实时显示最新Top5频道
  • 点赞量Top5(饼图): 实时显示最新Top5地区

3、部署方式

基于免安装可执行程序:支持Windows、Linux、Mac等各种操作系统;将程序复制到服务器上即可,无需其它环境依赖;

观看方式:既可在服务器上直接观看程序界面,也可在远程用浏览器打开播放,例如Chrome浏览器、360浏览器等。

二、整体架构设计

  1. 前端基于Echarts开源库设计,使用WebStorm编辑器;
  2. 后端基于Python Web实现,使用Pycharm编辑器;
  3. 数据传输格式:JSON;
  4. 数据源类型:目前已支持PostgreSQL、MySQL、Oracle、Microsoft SQL Server、SQLite、Excel表格等,还可以定制HTTP API接口方式或其它类型数据库。
  5. 数据更新方式:摒弃了前端页面定时拉取的方式(这种方式带来严重的资源浪费),采用后端数据实时更新,实时推送到前端展示;

三、编码实现 (基于篇幅及可读性考虑,此处展示部分关键代码)

1、前端html代码

<!doctype html><html>
<head><meta charset="utf-8"><meta content="*" http-equiv="Access-Control-Allow-Origin"/><title>index</title><script src="js/jquery.js" type="text/javascript"></script><link href="css/comon0.css" rel="stylesheet">
</head>
<script>$(window).load(function () {$(".loading").fadeOut()})/****/$(document).ready(function () {var whei = $(window).width()$("html").css({fontSize: whei / 20})$(window).resize(function () {var whei = $(window).width()$("html").css({fontSize: whei / 20})});});
</script>
<script src="js/echarts.min.js" type="text/javascript"></script>
<script language="JavaScript" src="js/js.js"></script>
<body>
<div class="canvas" style="opacity: .2"><iframe frameborder="0" src="js/index.html" style="width: 100%; height: 100%"></iframe>
</div>
<div class="loading"><div class="loadbox"><img src="picture/loading.gif"> 页面加载中...</div>
</div>
<div class="head"><h1>大数据可视化展板 —— 互联网企业数据分析</h1><div class="weather"><!--<img src="picture/weather.png"><span>多云转小雨</span>--><span id="showTime"></span></div><script>//alert("aaaaaa");var t = null;t = setTimeout(time, 1000);//开始运行function time() {clearTimeout(t);//清除定时器dt = new Date();var y = dt.getFullYear();var mt = dt.getMonth() + 1;var day = dt.getDate();var h = dt.getHours();//获取时var m = dt.getMinutes();//获取分var s = dt.getSeconds();//获取秒document.getElementById("showTime").innerHTML = y + "年" + mt + "月" + day + "-" + h + "时" + m + "分" + s + "秒";//async_data();t = setTimeout(time, 1000); //设定定时器,循环运行}</script>
</div>
<div class="mainbox"><ul class="clearfix"><li><div class="boxall" style="height: 3.2rem"><div class="alltitle">用户访问来源</div><div class="allnav" id="echart1"></div><div class="boxfoot"></div></div><div class="boxall" style="height: 3.2rem"><div class="alltitle">访问地区分布</div><div class="allnav" id="echart2"></div><div class="boxfoot"></div></div><div class="boxall" style="height: 3.2rem"><div style="height:100%; width: 100%;"><div class="sy" id="fb1"></div><div class="sy" id="fb2"></div><div class="sy" id="fb3"></div></div><div class="boxfoot"></div></div></li><li><div class="bar"><div class="barbox"><ul class="clearfix"><li class="pulll_left counter " id="total_pv">12581189</li><li class="pulll_left counter" id="total_income">3912410</li></ul></div><div class="barbox2"><ul class="clearfix"><li class="pulll_left">总阅读量(pv)</li><li class="pulll_left">总收益</li></ul></div></div><div class="map"><div class="map1"><img src="picture/lbx.png"></div><div class="map2"><img src="picture/jt.png"></div><div class="map3"><img src="picture/map.png"></div><div class="map4" id="map_1"></div></div></li><li><div class="boxall" style="height:3.4rem"><div class="alltitle">终端设备分布</div><div class="allnav" id="echart4"></div><div class="boxfoot"></div></div><div class="boxall" style="height: 3.2rem"><div class="alltitle">频道访问量Top5</div><div class="allnav" id="echart5"></div><div class="boxfoot"></div></div><div class="boxall" style="height: 3rem"><div class="alltitle">点赞量Top5</div><div class="allnav" id="echart6"></div><div class="boxfoot"></div></div></li></ul>
</div>
<div class="back"></div><script src="js/china.js" type="text/javascript"></script>
<script src="js/area_echarts.js" type="text/javascript"></script>
</body>
</html>

2、前端js代码


var echarts_series_data = [{value: 335, name: '直接访问'},{value: 310, name: '邮件营销'},{value: 234, name: '联盟广告'},];
$(function() {echarts_1();echarts_2();echarts_4();echarts_31();echarts_32();echarts_33();echarts_5();echarts_6();function echarts_1() {var myChart = echarts.init(document.getElementById('echart1'));option = {title: {// text: '某站点用户访问来源',// subtext: '纯属虚构',left: 'center'},tooltip: {trigger: 'item',formatter: '{a} <br/>{b} : {c} ({d}%)'},legend: {// orient: 'vertical',left: 'left',// data: echarts_data},series: [{name: '访问来源',type: 'pie',radius: '55%',center: ['50%', '60%'],data: echarts_series_data,emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});}function echarts_2() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('echart2'));var echarts_data = ['浙江', '上海', '江苏', '广东', '北京', '深圳', '安徽'];var echarts_series_data = [1500, 1200, 600, 200, 300, 300, 900];option = {//  backgroundColor: '#00265f',tooltip: {trigger: 'axis',axisPointer: { type: 'shadow'}},grid: {left: '0%',top:'10px',right: '0%',bottom: '4%',containLabel: true},xAxis: [{type: 'category',data: echarts_data,axisLine: {show: true,lineStyle: {color: "rgba(255,255,255,.1)",width: 1,type: "solid"},},axisTick: {show: false,},axisLabel:  {interval: 0,// rotate:50,show: true,splitNumber: 15,textStyle: {color: "rgba(255,255,255,.6)",fontSize: '12',},},}],yAxis: [{type: 'value',axisLabel: {//formatter: '{value} %'show:true,textStyle: {color: "rgba(255,255,255,.6)",fontSize: '12',},},axisTick: {show: false,},axisLine: {show: true,lineStyle: {color: "rgba(255,255,255,.1	)",width: 1,type: "solid"},},splitLine: {lineStyle: {color: "rgba(255,255,255,.1)",}}}],series: [{type: 'bar',data: echarts_series_data,barWidth:'35%', //柱子宽度// barGap: 1, //柱子之间间距itemStyle: {normal: {color:'#27d08a',opacity: 1,barBorderRadius: 5,}}}]
};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});}function echarts_5() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('echart5'));option = {dataset: {source: [['数量', '项目'],[ 28, 'C\C++'],[ 48, 'Java'],[ 61, 'Php'],[ 92, 'Python'],[ 101, 'Go']]},// grid: {containLabel: true},grid: {left: '0%',top:'10px',right: '0%',bottom: '4%',containLabel: true},xAxis: [{type: 'value',// type: 'category',// data: echarts_data,axisLine: {show: true,lineStyle: {color: "rgba(255,255,255,.1)",width: 1,type: "solid"},},axisTick: {show: false,},axisLabel: {interval: 0,// rotate:50,show: true,splitNumber: 15,textStyle: {color: "rgba(255,255,255,.6)",fontSize: '12',},},}],yAxis: [{type: 'category',// type: 'value',axisLabel: {//formatter: '{value} %'show: true,textStyle: {color: "rgba(255,255,255,.6)",fontSize: '12',},},axisTick: {show: false,},axisLine: {show: true,lineStyle: {color: "rgba(255,255,255,.1	)",width: 1,type: "solid"},},splitLine: {lineStyle: {color: "rgba(255,255,255,.1)",}}}],series: [{type: 'bar',encode: {// Map the "amount" column to X axis.x: '数量',// Map the "product" column to Y axisy: '产品'}}]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});}function echarts_4() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('echart4'));option = {tooltip: {trigger: 'axis',axisPointer: {lineStyle: {color: '#dddc6b'}}},legend: {top:'0%',data:['安卓','IOS'],textStyle: {color: 'rgba(255,255,255,.5)',fontSize: '12',}},grid: {left: '10',top: '30',right: '10',bottom: '10',containLabel: true},xAxis: [{type: 'category',boundaryGap: false,axisLabel: {textStyle: {color: "rgba(255,255,255,.6)",fontSize: 12,},},axisLine: {lineStyle: {color: 'rgba(255,255,255,.2)'}},data: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24']}, {axisPointer: {show: false},axisLine: {show: false},position: 'bottom',offset: 20,}],yAxis: [{type: 'value',axisTick: {show: false},axisLine: {lineStyle: {color: 'rgba(255,255,255,.1)'}},axisLabel: {textStyle: {color: "rgba(255,255,255,.6)",fontSize: 12,},},splitLine: {lineStyle: {color: 'rgba(255,255,255,.1)'}}}],series: [{name: '安卓',type: 'line',smooth: true,symbol: 'circle',symbolSize: 5,showSymbol: false,lineStyle: {normal: {color: '#0184d5',width: 2}},areaStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(1, 132, 213, 0.4)'}, {offset: 0.8,color: 'rgba(1, 132, 213, 0.1)'}], false),shadowColor: 'rgba(0, 0, 0, 0.1)',}},itemStyle: {normal: {color: '#0184d5',borderColor: 'rgba(221, 220, 107, .1)',borderWidth: 12}},data: [3, 4, 3, 4, 3, 4, 3, 6, 2, 4, 2, 4,3, 4, 3, 4, 3, 4, 3, 6, 2, 4, 2, 4]}, 
{name: 'IOS',type: 'line',smooth: true,symbol: 'circle',symbolSize: 5,showSymbol: false,lineStyle: {normal: {color: '#00d887',width: 2}},areaStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(0, 216, 135, 0.4)'}, {offset: 0.8,color: 'rgba(0, 216, 135, 0.1)'}], false),shadowColor: 'rgba(0, 0, 0, 0.1)',}},itemStyle: {normal: {color: '#00d887',borderColor: 'rgba(221, 220, 107, .1)',borderWidth: 12}},data: [5, 3, 5, 6, 1, 5, 3, 5, 6, 4, 6, 4, 8, 3, 5, 6, 1, 5, 3, 7, 2, 5, 1, 4]},]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});}function echarts_6() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('echart6'));var dataStyle = {normal: {label: {show: false},labelLine: {show: false},//shadowBlur: 40,//shadowColor: 'rgba(40, 40, 40, 1)',}
};
var placeHolderStyle = {normal: {color: 'rgba(255,255,255,.05)',label: {show: false,},labelLine: {show: false}},emphasis: {color: 'rgba(0,0,0,0)'}
};
option = {color: ['#0f63d6', '#0f78d6', '#0f8cd6', '#0fa0d6', '#0fb4d6'],tooltip: {show: true,formatter: "{a} : {c} "},legend: {itemWidth: 10,itemHeight: 10,itemGap: 12,bottom: '3%',data: ['浙江', '上海', '广东', '北京', '深圳'],textStyle: {color: 'rgba(255,255,255,.6)',}},series: [{name: '浙江',type: 'pie',clockWise: false,center: ['50%', '42%'],radius: ['59%', '70%'],itemStyle: dataStyle,hoverAnimation: false,data: [{value: 80,name: '01'}, {value: 20,name: 'invisible',tooltip: {show: false},itemStyle: placeHolderStyle}]},{name: '上海',type: 'pie',clockWise: false,center: ['50%', '42%'],radius: ['49%', '60%'],itemStyle: dataStyle,hoverAnimation: false,data: [{value: 70,name: '02'}, {value: 30,name: 'invisible',tooltip: {show: false},itemStyle: placeHolderStyle}]}, {name: '广东',type: 'pie',clockWise: false,hoverAnimation: false,center: ['50%', '42%'],radius: ['39%', '50%'],itemStyle: dataStyle,data: [{value: 65,//name: '03'}, {value: 35,//name: 'invisible',//tooltip: {show: false},itemStyle: placeHolderStyle}]} ]
};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});}function echarts_31() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('fb1')); 
option = {title: [{text: '年龄分布',left: 'center',textStyle: {color: '#fff',fontSize:'16'}}],tooltip: {trigger: 'item',formatter: "{a} <br/>{b}: {c} ({d}%)",
position:function(p){   //其中p为当前鼠标的位置return [p[0] + 10, p[1] - 10];}},legend: {top:'70%',itemWidth: 10,itemHeight: 10,data:['0岁以下','20-29岁','30-39岁','40-49岁','50岁以上'],textStyle: {color: 'rgba(255,255,255,.5)',fontSize:'12',}},series: [{name:'年龄分布',type:'pie',center: ['50%', '42%'],radius: ['40%', '60%'],color: ['#065aab', '#066eab', '#0682ab', '#0696ab', '#06a0ab','#06b4ab','#06c8ab','#06dcab','#06f0ab'],	label: {show:false},labelLine: {show:false},data:[{value:1, name:'0岁以下'},{value:4, name:'20-29岁'},{value:2, name:'30-39岁'},{value:2, name:'40-49岁'},{value:1, name:'50岁以上'},]}]
};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});}function echarts_32() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('fb2'));option = {title: [{text: '职业分布',left: 'center',textStyle: {color: '#fff',fontSize: '16'}}],tooltip: {trigger: 'item',formatter: "{a} <br/>{b}: {c} ({d}%)",
position:function(p){   //其中p为当前鼠标的位置return [p[0] + 10, p[1] - 10];}},legend: {top:'70%',itemWidth: 10,itemHeight: 10,data:['电子商务','教育','IT/互联网','金融','学生','其他'],textStyle: {color: 'rgba(255,255,255,.5)',fontSize:'12',}},series: [{name:'职业分布',type:'pie',center: ['50%', '42%'],radius: ['40%', '60%'],color: ['#065aab', '#066eab', '#0682ab', '#0696ab', '#06a0ab','#06b4ab','#06c8ab','#06dcab','#06f0ab'],	label: {show:false},labelLine: {show:false},data:[{value:5, name:'电子商务'},{value:1, name:'教育'},{value:6, name:'IT/互联网'},{value:2, name:'金融'},{value:1, name:'学生'},{value:1, name:'其他'},]}]
};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});}function echarts_33() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('fb3'));option = {title: [{text: '兴趣分布',left: 'center',textStyle: {color: '#fff',fontSize: '16'}}],tooltip: {trigger: 'item',formatter: "{a} <br/>{b}: {c} ({d}%)",
position:function(p){   //其中p为当前鼠标的位置return [p[0] + 10, p[1] - 10];}},legend: {top:'70%',itemWidth: 10,itemHeight: 10,data:['汽车','旅游','财经','教育','软件','其他'],textStyle: {color: 'rgba(255,255,255,.5)',fontSize:'12',}},series: [{name:'兴趣分布',type:'pie',center: ['50%', '42%'],radius: ['40%', '60%'],color: ['#065aab', '#066eab', '#0682ab', '#0696ab', '#06a0ab','#06b4ab','#06c8ab','#06dcab','#06f0ab'],	label: {show:false},labelLine: {show:false},data:[{value:2, name:'汽车'},{value:3, name:'旅游'},{value:1, name:'财经'},{value:4, name:'教育'},{value:8, name:'软件'},{value:1, name:'其他'},]}]
};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});}})//async_data();
function  async_data() {// 异步加载数据$.getJSON('json/echart1.json').done(function (data) {var myChart = echarts.init(document.getElementById('echart1'));myChart.setOption({series: [{data: data}]});});//end $.getJSON$.getJSON('json/echart2.json').done(function (data) {var myChart = echarts.init(document.getElementById('echart2'));myChart.setOption({xAxis: data["xAxis"],series:data["series"]});});  //end $.getJSON$.getJSON('json/echart4.json').done(function (data) {var myChart = echarts.init(document.getElementById('echart4'));myChart.setOption({legend: data["legend"],xAxis: data["xAxis"],series: data["series"]});});//end $.getJSON$.getJSON('json/echart5.json').done(function (data) {var myChart = echarts.init(document.getElementById('echart5'));myChart.setOption({dataset: data["dataset"]});});//end $.getJSON$.getJSON('json/echart6.json').done(function (data) {var myChart = echarts.init(document.getElementById('echart6'));myChart.setOption({legend: data["legend"],series: data["series"]});});//end $.getJSON$.getJSON('json/echart31.json').done(function (data) {var myChart = echarts.init(document.getElementById('fb1'));
//        console.log(data["legend"])myChart.setOption({title: data["title"],legend: data["legend"],series: data["series"]});});//end $.getJSON$.getJSON('json/echart32.json').done(function (data) {var myChart = echarts.init(document.getElementById('fb2'));
//        console.log(data["legend"])myChart.setOption({title: data["title"],legend: data["legend"],series: data["series"]});});//end $.getJSON$.getJSON('json/echart33.json').done(function (data) {var myChart = echarts.init(document.getElementById('fb3'));
//        console.log(data["legend"])myChart.setOption({title: data["title"],legend: data["legend"],series: data["series"]});});//end $.getJSON$.getJSON('json/common.json').done(function (data) {document.getElementById('total_pv').innerText = data["total_pv"]document.getElementById('total_income').innerText = data["total_income"]});//end $.getJSON
}

3、后端python代码

#author QQ "6550523" or weixin "6550523"
import _thread
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import QWebEngineView
from pyecharts import Geo
from PyQt5.QtCore import QUrl
from win32api import GetSystemMetrics
from PyQt5 import QtGui
from httpserver import *
from asyncJson import *class MainWindow(QMainWindow):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)self.loadfinished = Falseself.setWindowTitle('大屏展示')self.showMaximized()#全屏显示self.showFullScreen()self.isFullScreen = Trueself.webview = WebEngineView()# self.webview.load(QUrl("file:///index.html"))self.webview.load(QUrl("http://localhost:8888/index.html"))self.setCentralWidget(self.webview)QShortcut(QtGui.QKeySequence("Escape"), self, self.Esc)self.webview.loadFinished.connect(self.SetLoadFinished)_thread.start_new_thread(HttpServer, ())_thread.start_new_thread(self.ChangeData, ())def SetLoadFinished(self):self.loadfinished = True#按ESC全屏或缩小def Esc(self):if self.isFullScreen == True :self.isFullScreen = False#不加这句的话,标题栏就看不到了self.showNormal()#设置固定宽高self.setGeometry(GetSystemMetrics(0)/2, GetSystemMetrics(1)/2, 1280, 768)#再移动到屏幕中央screen = QDesktopWidget().screenGeometry()size = self.geometry()self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2)else:self.showFullScreen()self.isFullScreen = Trueclass WebEngineView(QWebEngineView):windowList = []# 重写createwindow()def createWindow(self, QWebEnginePage_WebWindowType):new_webview =  WebEngineView()new_window = MainWindow()new_window.setCentralWidget(new_webview)#new_window.show()return new_webviewif __name__ == "__main__":app = QApplication(sys.argv)w = MainWindow()w.show()sys.exit(app.exec_())

四、上线运行

五、源码下载

【源码】数据可视化:基于Echarts+Python实现的动态实时大屏范例1-互联网企业数据分析.zip_python+echarts大屏-管理软件文档类资源-CSDN下载
 

注:源码包括python的webserver + json数据源码 + echarts

启动命令:打开cmd命令行,切换到案例根目录,运行 python httpserver.py

引用:基于互联网大牛的前端改进一下,做了个可执行程序,获取数据后更新到页面上。

精彩案例汇总

YYDatav的数据可视化《精彩案例汇总》_YYDataV的博客-CSDN博客

本次分享结束,欢迎讨论!QQ微信同号: 6550523

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63126.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【qstock量化】动态交互数据可视化

qstock简介 qstock由“Python金融量化”开发&#xff0c;试图打造成个人量化投研分析开源库&#xff0c;目前包括数据获取&#xff08;data&#xff09;、可视化(plot)、选股(stock)和量化回测&#xff08;backtest&#xff09;四个模块。其中数据模块&#xff08;data&#xf…

新一代开源数据可视化开放平台,是如何做实时大屏/报表的?

先看两张简单配置的习作 datart 实时大屏——决策驾驶舱 datart——生产大屏 上面是在国产开源的数据可视化 datart 上简单配置的两个实时大屏&#xff0c;截图展现不出来交互的效果&#xff0c;下面传一段视频&#xff1a; 生产大屏页面 下面是安利时间 数据可视化 datart&a…

数据可视化:BI热力地图制作

热力图时以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。热力图可以显示不可点击区域发生的事情。 热力图可以直观清楚地看到页面上每一个区域的访客兴趣焦点&#xff0c;无须报告数据分析&#xff0c;图形化展现&#xff0c;无需任何页面分析经验。 上…

海量数据如何在Web端实现动态可视化?看看这家企业是怎么做的

“我们TestLogger公司是一家赛车行业的软件公司&#xff0c;主要是通过分析在赛道上多个传感器收集到的赛车数据&#xff0c;帮助提高赛车性能。TestLogger Analyzer就是其中的一款核心数据分析工具&#xff0c;在我们构建该工具的第一个产品原型时&#xff0c;就发现由于不同类…

动态数据可视化图表制作

动态数据可视化图表制作的5个基本流程&#xff1a;原始数据分析、确定所需图表类型、导入数据&#xff0c;进行初步优化、整体优化和检验成效这五个流程。 1.原始数据分析&#xff1a; 明确动态数据分析并清楚认识到数据的类型、与其他数据之间的关联、需要哪些数据元素、舍弃…

数据动态可视化

数据动态可视化 0 前言1 所需工具2 制作步骤 0 前言 最近做数据分析时&#xff0c;需要绘制一些动态变化图&#xff0c;想到之前见过网上有很多展示世界各国综合实力、GDP这样的视频&#xff0c;便想要找一找有没有相关资源&#xff0c;结果发现教程较少&#xff0c;因此将我的…

数据可视化_EChat

如何获取echart Apache ECharts 实例化1 主要核心文件是这三个 将这三个文件放入webstorm 的 js文件夹中 按照官网文档的实例创建一个html&#xff0c;将body 的内容全部替换 引入js文件 <!DOCTYPE html> <html lang"en"> <head><meta chars…

手把手教你做出数据可视化项目(七)可视化图表数据动态获取及界面跳转

数据可视化前言&#xff1a;https://blog.csdn.net/diviner_s/article/details/115933789 Apache Echarts简介&#xff1a;https://blog.csdn.net/diviner_s/article/details/115934089 项目最终效果图&#xff1a; 此篇博客为自己学习pink老师的课后完成的项目的总结与记录&a…

会展行业年度总结,鲸会务深入探索双线会议领域

2021的日历只剩单薄的几页&#xff0c;又到了盘点与回顾这一年的时间。因为众所周知的原因&#xff0c;整个会议会展行业都在震荡中发展&#xff0c;而防控政策也客观上加速了行业的数字化升级&#xff0c;双线会议会展甚至线上会议会展成为大势所趋。在此过程中&#xff0c;一…

ChatGPT有几个版本,哪个版本最强,如何选择适合自己的?

​ChatGPT就像内容生产界的瑞士军刀。它可以是数学导师、治疗师、职业顾问、编程助手&#xff0c;甚至是旅行指南。只要你知道如何让它做你想做的事&#xff0c;ChatGPT几乎可以提供你要的任何东西。 但重要的是&#xff0c;你知道哪个版本的ChatGPT最能满足你的需求吗&#x…

明朝第一才子杨慎十首诗词

杨慎(1488&#xff5e;1559)&#xff0c;公认为明朝三大才子之首。“相如赋&#xff0c;太白诗&#xff0c;东坡文&#xff0c;升庵科第。”前面的几个大家可能都猜得出来&#xff0c;司马相如的赋&#xff0c;李白的诗&#xff0c;苏东坡的文&#xff0c;而所谓的“升庵科第”…

Python爬虫——爬取古诗词

文章目录 前言一、基本目标二、使用步骤1.进行分析2.整体代码 结果总结 前言 &#x1f338;当你喜欢哪个诗人&#xff0c;想获取他的全部诗词数据的时候&#xff0c;可以通过爬虫来解决这个问题&#xff0c;用爬虫把诗词全部爬下来&#xff0c;然后存到txt文档中&#xff0c;打…

LLM-GPT系列:GPT-1(201806)【1.17亿、5GB】、GPT-2(201902)【15亿、40GB】、GPT-3(202005)【1750亿、45TB】【OpenAI】

GPT1:Imporoving Language Understanding By Generative Pre-training GPT2:Lanuage Models Are Unsupervised Multitask Learners GPT3:Language Models Are Few-shot Learners GitHub:https://github.com/openai/gpt-3 从GPT三个版本的论文名也能看出各版本模型的重点…

汇正财经靠谱吗?沪深创均深V反弹,科创50大涨

盘面回顾&#xff1a; 沪深创午后均多头反击&#xff0c;实现探底回升翻红&#xff0c;截止收盘沪指涨0.09%&#xff0c;深成指涨0.44%&#xff0c;创业板指涨0.67%&#xff0c;科创50大涨1.56%。脑机接口概念股继续大涨&#xff0c;算力、ChatGPT概念股午后再有走强&#xff…

云原生:数字化转型的关键驱动力

作者 | 刘凡 责编 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 随着 Docker、K8s、云原生等技术的演进&#xff0c;为企业数字化转型提供了一种更加现代化的 IT 平台&#xff0c;本文作者是云原生一体化平台 Rainbond 创始人刘凡&#xff0c;他…

几个快速提升工作效率的小工具(Listary等)分享一下(强烈建议收藏)

您好&#xff0c;我是码农飞哥&#xff0c;感谢您阅读本文&#xff01;如果此文对您有所帮助&#xff0c;读者朋友们毫不犹豫的给个一键三连呗 文章目录 给方法名命名的工具搜索工具下载使用 总结结尾彩蛋 给方法名命名的工具 不知道你是否有在给方法或者类起一个合适的方法名…

可以帮助提升程序员高效工作效率的常用小工具推荐

给大家分享一些程序员的实用工具&#xff0c;工具用得好&#xff0c;帮助你快速提升效率。 1、Xmind思维导图 Xmind是一款比较适合记录想法的软件&#xff0c;尤其是在当你负责项目的时候&#xff0c;把项目的各方面想法进行细化和展现出来&#xff0c;不用大量的文字来…

一位老程序员的退休忠告:别想着靠技术生存一辈子!

点击关注公众号&#xff0c;Java干货及时送达&#x1f447; 笔者目前是自己单干&#xff0c;但此前有多年在从事软件开发工作&#xff0c;回头想想自己&#xff0c;特别想对那些初学JAVA/DOT、NET技术的朋友说点心里话&#xff0c;希望我们的体会多少能给你们一些启发。 一、 在…

.NET5发布,这个微软“全家桶”会是.NET的春天吗?

在全面开源的步伐下&#xff0c;微软也逐步跟上了脚步&#xff0c;作为微软最早迈向开源的重要软件之一&#xff0c;.NET 5的发布对微软及其使用者都具有重要意义。 微软未来目标是将所有的 .NET 组件整合到一个产品下&#xff0c;然后用户可以根据需求使用 .NET 的某个部分&a…

让AI为你制作思维导图 —— ChatMind

ChatMind是什么 ChatMind&#xff0c;是一款利用与 AI 的对话中生成和编辑思维导图的工具&#xff0c;支持上下文改写扩充对话&#xff0c;ChatMind AI 可用于多种场景&#xff0c;例如记笔记、日程安排、项目管理、头脑风暴、框架等等。 既能帮助用户快速总结分析&#xff0…