1、前言
本項(xiàng)目是基于flask+echarts搭建的全國(guó)疫情追蹤的可視化大屏,主要涉及到的技術(shù)有csv處理,flask框架,echarts圖表。
最終效果如下:
2、實(shí)現(xiàn)
2.1 搭建flask應(yīng)用
我們先搭建一個(gè)基礎(chǔ)的flask應(yīng)用
from flask import Flask,render_template
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
2.2 編寫(xiě)html及其對(duì)應(yīng)css代碼
接著,需要編寫(xiě)index.html頁(yè)面和css樣式代碼(這里我就直接放最終的代碼)
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 指定網(wǎng)頁(yè)字符編碼 -->
<meta charset="UTF-8">
<!-- 適配移動(dòng)端 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>疫情數(shù)據(jù)可視化大屏</title>
<link rel="stylesheet" href="/static/css/index.css">
</head>
<body>
<div id="title">疫情數(shù)據(jù)可視化大屏</div>
<div id="left1">
</div>
<div id="left2">
</div>
<div id="center1">
<div class="item">
<div class="number" id="confirm"></div>
<div class="text">累計(jì)確診</div>
</div>
<div class="item">
<div class="number" id="heal"></div>
<div class="text">累計(jì)治愈</div>
</div>
<div class="item">
<div class="number" id="dead"></div>
<div class="text">累計(jì)死亡</div>
</div>
<div class="item">
<div class="number" id="nowConfirm"></div>
<div class="text">現(xiàn)有確診</div>
</div>
<div class="item">
<div class="number" id="noInfect"></div>
<div class="text">無(wú)癥狀感染者</div>
</div>
<div class="item">
<div class="number" id="importedCase"></div>
<div class="text">境外輸入</div>
</div>
</div>
<div id="center2">
</div>
<div id="right1"></div>
<div id="right2"></div>
<script src="/static/js/left1.js"></script>
<script src="/static/js/left2.js"></script>
<script src="/static/js/center1.js"></script>
<script src="/static/js/center2.js"></script>
<script src="/static/js/right1.js"></script>
<script src="/static/js/right2.js"></script>
<script src="/static/js/echarts.min.js"></script>
<script src="/static/js/china.js"></script>
<script>
// 初始化echart實(shí)例對(duì)象
var left1Chart = echarts.init(document.getElementById('left1'), 'dark');
// 指定圖表的配置項(xiàng)和數(shù)據(jù)
// ----------左1的配置項(xiàng)-------------------
var option = {
title: {
text: "全國(guó)累計(jì)趨勢(shì)",
textStyle: {
color: 'white',
},
left: 'left',
},
tooltip: {
trigger: 'axis',
//指示器
axisPointer: {
type: 'line',
lineStyle: {
color: '#7171C6'
}
},
},
//圖例
legend: {
data: ['累計(jì)確診', "累計(jì)治愈", "累計(jì)死亡"],
left: "right"
},
//圖形位置
grid: {
left: '4%',
right: '6%',
bottom: '4%',
top: 50,
containLabel: true
},
xAxis: [{
type: 'category',
data: []
}],
yAxis: [{
type: 'value',
//y軸字體設(shè)置
axisLabel: {
show: true,
color: 'white',
fontSize: 12,
formatter: function (value) {
if (value >= 10000000) {
value = value / 10000000 + 'kw';
}
return value;
}
},
//y軸線設(shè)置顯示
axisLine: {
show: true
},
//與x軸平行的線樣式
splitLine: {
show: true,
lineStyle: {
color: '#17273B',
width: 1,
type: 'solid',
}
}
}],
series: [{
name: "累計(jì)確診",
type: 'line',
smooth: true,
data: []
}, {
name: "累計(jì)治愈",
type: 'line',
smooth: true,
data: []
}, {
name: "累計(jì)死亡",
type: 'line',
smooth: true,
data: []
}]
};
var chinaDayList = left1.chinaDayList
// 遍歷每一天的數(shù)據(jù)
for (var day of chinaDayList) {
// 將每天的累計(jì)確診病例數(shù)添加到配置項(xiàng)的data中
option.xAxis[0].data.push(day.date)
option.series[0].data.push(day.confirm)
option.series[1].data.push(day.heal)
option.series[2].data.push(day.dead)
}
// 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。
left1Chart.setOption(option);
</script>
<script>
// 初始化echart實(shí)例對(duì)象
var myChart = echarts.init(document.getElementById('center2'), 'dark');
// 指定圖表的配置項(xiàng)和數(shù)據(jù)
var option = {
title: {
text: '全國(guó)疫情地圖展示',
textStyle: {
color: 'gold',
fontStyle: 'normal',
},
left: 'center',
top: '40px'
},
tooltip: {
trigger: 'item'
},
visualMap: { // 左側(cè)小導(dǎo)航圖標(biāo)
show: true,
x: 'left',
y: 'bottom',
textStyle: {
fontSize: 8,
},
splitList: [{
start: 1,
end: 9
},
{
start: 10,
end: 99
},
{
start: 100,
end: 999
},
{
start: 1000,
end: 9999
},
{
start: 10000
}
],
color: ['#8A3310', '#C64918', '#E55B25', '#F2AD92', '#F9DCD1']
},
series: [{
name: '累計(jì)確診人數(shù)',
type: 'map',
mapType: 'china',
roam: false, // 禁用拖動(dòng)和縮放
itemStyle: { // 圖形樣式
normal: {
borderWidth: .5, //區(qū)域邊框?qū)挾?/span>
borderColor: '#009fe8', //區(qū)域邊框顏色
areaColor: "#ffefd5", //區(qū)域顏色
},
emphasis: { // 鼠標(biāo)滑過(guò)地圖高亮的相關(guān)設(shè)置
borderWidth: .5,
borderColor: '#4b0082',
areaColor: "#fff",
}
},
label: { // 圖形上的文本標(biāo)簽
normal: {
show: true, //省份名稱(chēng)
fontSize: 8,
},
emphasis: {
show: true,
fontSize: 8,
}
},
data: []
}]
};
// 獲取中國(guó)各省市特區(qū)
var provinces = center2.areaTree[0].children
// 遍歷每一個(gè)省自治區(qū)、直轄市
for (var province of provinces) {
// 將每個(gè)省的累計(jì)確診病例數(shù)添加到配置項(xiàng)的data中
option.series[0].data.push({
'name': province.name,
'value': province.total.confirm
})
}
// 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。
myChart.setOption(option);
</script>
<script>
document.getElementById('confirm').innerText = center1.chinaTotal.confirm
document.getElementById('heal').innerText = center1.chinaTotal.heal
document.getElementById('dead').innerText = center1.chinaTotal.dead
document.getElementById('nowConfirm').innerText = center1.chinaTotal.nowConfirm
document.getElementById('noInfect').innerText = center1.chinaTotal.noInfect
document.getElementById('importedCase').innerText = center1.chinaTotal.importedCase
</script>
<script>
// 初始化echart實(shí)例對(duì)象
var left2Chart = echarts.init(document.getElementById('left2'), 'dark');
// 指定圖表的配置項(xiàng)和數(shù)據(jù)
// ----------左2的配置項(xiàng)-------------------
var option = {
title: {
text: '全國(guó)新增趨勢(shì)',
textStyle: {
color: 'white',
},
left: 'left',
},
tooltip: {
trigger: 'axis',
//指示器
axisPointer: {
type: 'line',
lineStyle: {
color: '#7171C6'
}
},
},
//圖例
legend: {
data: ['新增確診', '新增疑似'],
left: 'right'
},
//圖形位置
grid: {
left: '4%',
right: '6%',
bottom: '4%',
top: 50,
containLabel: true
},
xAxis: [{
type: 'category',
data: [] // ['03.20', '03.21', '03.22']
}],
yAxis: [{
type: 'value',
//y軸字體設(shè)置
axisLabel: {
show: true,
color: 'white',
fontSize: 12,
formatter: function (value) {
if (value >= 10000000) {
value = value / 10000000 + 'kw';
}
return value;
}
},
//y軸線設(shè)置顯示
axisLine: {
show: true
},
//與x軸平行的線樣式
splitLine: {
show: true,
lineStyle: {
color: '#17273B',
width: 1,
type: 'solid',
}
}
}],
series: [{
name: '新增確診',
type: 'line',
smooth: true,
data: [] // [20, 406, 529]
}, {
name: '新增疑似',
type: 'line',
smooth: true,
data: [] // [25, 75, 122]
}]
};
var chinaDayAddList = left2.chinaDayAddList
for (var day of chinaDayAddList) {
// 將每個(gè)省的累計(jì)確診病例數(shù)添加到配置項(xiàng)的data中
option.xAxis[0].data.push(day.date)
option.series[0].data.push(day.confirm)
option.series[1].data.push(day.suspect)
}
// 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。
left2Chart.setOption(option);
</script>
<script>
// 初始化echart實(shí)例對(duì)象
var right1Chart = echarts.init(document.getElementById('right1'), 'dark');
// ----------右1的配置項(xiàng)-------------------
var option = {
title: {
text: "全國(guó)確診省市TOP10",
textStyle: {
color: 'white',
},
left: 'left'
},
color: ['#3398DB'],
tooltip: {
trigger: 'axis',
//指示器
axisPointer: {
type: 'shadow' // 默認(rèn)為直線,可選為:'line' | 'shadow'
}
},
xAxis: {
type: 'category',
data: [] // ['湖北','廣州','北京']
},
yAxis: {
type: 'value',
//y軸字體設(shè)置
axisLabel: {
show: true,
color: 'white',
fontSize: 12,
formatter: function (value) {
if (value >= 1000) {
value = value / 1000 + 'k';
}
return value;
}
},
},
series: [{
data: [], // [582, 300, 100]
type: 'bar',
barMaxWidth: "50%"
}]
};
// 獲取中國(guó)各省市特區(qū)
var provinces = right1.areaTree[0].children
var topData = []
// 遍歷每一個(gè)省自治區(qū)、直轄市
for (var province of provinces) {
// 將每個(gè)省的累計(jì)確診病例數(shù)添加到配置項(xiàng)的data中
topData.push({
'name': province.name,
'value': province.total.confirm
})
}
topData.sort(function (a, b) {
return b.value - a.value
})
topData.length = 10
// console.log(topData)
for (var province of topData) {
// 將每個(gè)省的累計(jì)確診病例數(shù)添加到配置項(xiàng)的data中
option.xAxis.data.push(province.name)
option.series[0].data.push(province.value)
}
// 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。
right1Chart.setOption(option);
</script>
<script>
// 初始化echart實(shí)例對(duì)象
var right2Chart = echarts.init(document.getElementById('right2'), 'dark');
//
// ----------右2的配置項(xiàng)-------------------
var option = {
title: {
text: "境外輸入省市TOP5",
textStyle: {
color: 'white',
},
left: 'left'
},
tooltip: {
trigger: 'axis',
//指示器
axisPointer: {
type: 'shadow' // 默認(rèn)為直線,可選為:'line' | 'shadow'
}
},
xAxis: {
type: 'category',
data: [] // ['湖北','廣州','北京']
},
yAxis: {
type: 'value',
//y軸字體設(shè)置
axisLabel: {
show: true,
color: 'white',
fontSize: 12,
formatter: function (value) {
if (value >= 1000) {
value = value / 1000 + 'k';
}
return value;
}
},
},
series: [{
data: [], // [582, 300, 100]
type: 'bar',
barMaxWidth: "50%"
}]
};
// 獲取中國(guó)各省市特區(qū)
var provinces = right2.areaTree[0].children
var topData = []
// 遍歷每一個(gè)省自治區(qū)、直轄市
for (var province of provinces) {
// 將每個(gè)省的累計(jì)確診病例數(shù)添加到配置項(xiàng)的data中
if (province.children[0].name == '境外輸入') {
topData.push({
'name': province.name,
'value': province.children[0].total.confirm
})
}
}
topData.sort(function (a, b) {
return b.value - a.value
})
topData.length = 5
for (var province of topData) {
// 將每個(gè)省的累計(jì)確診病例數(shù)添加到配置項(xiàng)的data中
option.xAxis.data.push(province.name)
option.series[0].data.push(province.value)
}
// 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。
right2Chart.setOption(option);
</script>
</body>
</html>
body {
background: #333;
}
#title {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 10%;
/* background: #555; */
color: white;
font-size: 35px;
/* 彈性盒子布局 */
display: flex;
/* 水平劇中*/
justify-content: center;
/* 垂直居中*/
align-items: center;
}
#left1 {
background: #555;
width: 30%;
height: 45%;
position: absolute;
top: 10%;
left: 0;
}
#left2 {
background: #666;
width: 30%;
height: 45%;
position: absolute;
top: 55%;
left: 0;
}
#center1 {
position: absolute;
top: 10%;
left: 30%;
width: 40%;
height: 25%;
/* background: #777; */
display: flex;
flex-wrap: wrap;
/*文本超出后換行*/
}
.item {
width: 33%;
}
.number {
height: 60%;
display: flex;
justify-content: center;
align-items: center;
color: gold;
font-size: 30px;
font-weight: bold;
}
.text {
height: 40%;
display: flex;
justify-content: center;
align-items: center;
color: white;
font-size: 18px;
font-weight: bold;
}
#center2 {
position: absolute;
top: 35%;
left: 30%;
width: 40%;
height: 65%;
background: #888;
}
#right1 {
position: absolute;
top: 10%;
right: 0;
width: 30%;
height: 45%;
background: #999;
}
#right2 {
position: absolute;
top: 55%;
right: 0;
width: 30%;
height: 45%;
background: #333;
}
2.3 可視化展示
我們需要編寫(xiě)獲取數(shù)據(jù)的接口,然后通過(guò)ajax來(lái)發(fā)送請(qǐng)求進(jìn)行調(diào)用,我這里是把讀取的數(shù)據(jù)保存在js,通過(guò)調(diào)用js代碼傳入數(shù)據(jù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-566128.html
2.3.1 左上角板塊
def get_left1():
df = pd.read_csv("./data/data.csv", encoding="gbk")
df = df[df['countryName'] == '中國(guó)']
df = df[['countryName', 'updateTime', 'confirmedCount', 'curedCount', 'deadCount']]
df['updateTime'] = df['updateTime'].str.slice(0, -3)
result = df.groupby('updateTime')[['confirmedCount', 'curedCount', 'deadCount']].sum().reset_index()
chinaDayList = []
for index, row in result.iterrows():
chinaDayList.append({'date': row['updateTime'], 'confirm': row['confirmedCount'], 'heal': row['curedCount'],
'dead': row['deadCount']})
data = 'var left1 = ' + str({"chinaDayList": chinaDayList})
with open('./static/js/left1.js', 'w') as f:
f.write(data)
2.3.2 中間上方板塊
def get_center1():
df = pd.read_csv("./data/data.csv", encoding="gbk")
df = df[df['countryName'] == '中國(guó)']
df = df[['countryName', 'updateTime', 'confirmedCount', 'curedCount', 'deadCount']]
result = df[['confirmedCount', 'curedCount', 'deadCount']].sum().reset_index()
confirm = result[index == 'confirmedCount'][0]
heal = result[index == 'curedCount'][1]
dead = result[index == 'deadCount'][2]
nowConfirm = df[df['updateTime'] == max(df['updateTime'])]['confirmedCount'].sum()
noInfect = df[df['updateTime'] == max(df['updateTime'])]['curedCount'].sum()
importedCase = df[df['updateTime'] == max(df['updateTime'])]['deadCount'].sum()
chinaTotal = {'confirm': confirm, 'heal': heal, 'dead': dead, 'nowConfirm': nowConfirm, 'noInfect': noInfect,
'importedCase': importedCase}
data = 'var center1 = ' + str({"chinaTotal": chinaTotal})
with open('./static/js/center1.js', 'w') as f:
f.write(data)
2.3.3 右上角板塊
def get_right1():
df = pd.read_csv("./data/data.csv", encoding="gbk")
df = df[df['countryName'] == '中國(guó)']
df = df[df['provinceName'] != '中國(guó)']
df = df[['countryName', 'provinceName', 'updateTime', 'confirmedCount']]
df = df[df['updateTime'] == max(df['updateTime'])]
children = []
for index, row in df.iterrows():
children.append({"name": row["provinceName"], "total": {"confirm": row['confirmedCount']}})
areaTree = {'children': children}
data = 'var right1 = ' + str({"areaTree": [areaTree]})
with open('./static/js/right1.js', 'w', encoding='utf-8') as f:
f.write(data)
2.3.4 左下角板塊
def get_left2():
df = pd.read_csv("./data/data.csv", encoding="gbk")
df = df[df['countryName'] == '中國(guó)']
df = df[['countryName', 'updateTime', 'confirmedCount', 'currentConfirmedCount']]
df['updateTime'] = df['updateTime'].str.slice(0, -3)
result = df.groupby('updateTime')[['confirmedCount', 'currentConfirmedCount']].sum().reset_index()
chinaDayAddList = []
for index, row in result.iterrows():
chinaDayAddList.append(
{'date': row['updateTime'], 'confirm': row['confirmedCount'], 'suspect': row['currentConfirmedCount']})
data = 'var left2 = ' + str({"chinaDayAddList": chinaDayAddList})
with open('./static/js/left2.js', 'w') as f:
f.write(data)
2.3.5 中間下方板塊
def get_center2():
df = pd.read_csv("./data/data.csv", encoding="gbk")
df = df[df['countryName'] == '中國(guó)']
df = df[df['provinceName'] != '中國(guó)']
df['provinceName'] = df['provinceName'].str.replace('省', '')
df['provinceName'] = df['provinceName'].str.replace('自治區(qū)', '')
df['provinceName'] = df['provinceName'].str.replace('回族', '')
df = df[['countryName', 'provinceName', 'updateTime', 'confirmedCount']]
df = df[df['updateTime'] == max(df['updateTime'])]
children = []
for index, row in df.iterrows():
children.append({"name": row["provinceName"], "total": {"confirm": row['confirmedCount']}})
areaTree = {'children': children}
data = 'var center2 = ' + str({"areaTree": [areaTree]})
with open('./static/js/center2.js', 'w', encoding='utf-8') as f:
f.write(data)
2.3.6 右下角板塊
def get_right2():
df = pd.read_csv("./data/data.csv", encoding="gbk")
df = df[df['countryName'] == '中國(guó)']
df = df[df['provinceName'] != '中國(guó)']
df = df.drop_duplicates(subset=['provinceName'], keep='first')
df = df[['countryName', 'provinceName', 'updateTime', 'currentConfirmedCount']]
df = df[df['updateTime'] == max(df['updateTime'])]
children = []
for index, row in df.iterrows():
children.append({"name": row["provinceName"],
"children": [{"name": "境外輸入", "total": {"confirm": row['currentConfirmedCount']}}]})
data = 'var right2 = ' + str({"areaTree": [{"children": children}]})
with open('./static/js/right2.js', 'w', encoding='utf-8') as f:
f.write(data)
2.4 完整代碼&數(shù)據(jù)集獲取
完整代碼&數(shù)據(jù)集可以私聊我獲取,還有更多可視化大屏等著你:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-566128.html
001 服務(wù)大數(shù)據(jù)可視化監(jiān)管平臺(tái)
002 水質(zhì)情況實(shí)時(shí)監(jiān)測(cè)預(yù)警系統(tǒng)
003 聯(lián)心菜市場(chǎng)數(shù)據(jù)中心
004 政務(wù)大數(shù)據(jù)共享交換平臺(tái)
005 可視化監(jiān)控管理
006 全國(guó)疫情實(shí)時(shí)監(jiān)控
007 惠民服務(wù)平臺(tái)
008 蘭州智慧消防大數(shù)據(jù)平臺(tái)
009 某公司大數(shù)據(jù)監(jiān)控平臺(tái)
010 雙數(shù)智慧公衛(wèi)-傳染病督導(dǎo)平臺(tái)
011 大數(shù)據(jù)可視化系統(tǒng)數(shù)據(jù)分析通用模版
012 某公司大數(shù)據(jù)展示模版
013 某公司大數(shù)據(jù)展示模版
014 時(shí)實(shí)客流量監(jiān)控中心
015 廣西礦產(chǎn)資源大數(shù)據(jù)監(jiān)管平臺(tái)
016 廣西礦產(chǎn)資源大數(shù)據(jù)監(jiān)管平臺(tái)
017 大數(shù)據(jù)可視化通用素材
018 大數(shù)據(jù)可視化系統(tǒng)數(shù)據(jù)分析通用模版
019 大數(shù)據(jù)可視化系統(tǒng)數(shù)據(jù)分析通用模版
020 大數(shù)據(jù)通用模版大標(biāo)題樣式
021 大數(shù)據(jù)通用模版
022 全息檔案平臺(tái)中心
023 醫(yī)院大數(shù)據(jù)展示
024 智慧社區(qū)內(nèi)網(wǎng)比對(duì)平臺(tái)
025 大數(shù)據(jù)可視化展板通用模板
026 設(shè)備環(huán)境監(jiān)測(cè)平臺(tái)
027 全國(guó)消費(fèi)者情況看板
028 移動(dòng)能耗管理平臺(tái)
029 南方軟件視頻平臺(tái)大屏中心
030 全國(guó)圖書(shū)零售檢測(cè)中心
031 數(shù)據(jù)可視化大屏展示系統(tǒng)
032 物流云數(shù)據(jù)看板平臺(tái)
033 數(shù)據(jù)可視化頁(yè)面設(shè)計(jì)
034 晉城高速綜合管控大數(shù)據(jù)
035 視頻監(jiān)控前后臺(tái)通用模板
036 門(mén)店銷(xiāo)售監(jiān)控平臺(tái)
037 建筑智慧工地管控
038 無(wú)線網(wǎng)絡(luò)大數(shù)據(jù)平臺(tái)
039 湖南省大數(shù)據(jù)可視化平臺(tái)
040 Echart圖例使用
041 智慧物流服務(wù)中心
042 大數(shù)據(jù)分析系統(tǒng)
043 網(wǎng)絡(luò)當(dāng)天實(shí)時(shí)發(fā)稿量
044 車(chē)聯(lián)網(wǎng)平臺(tái)數(shù)據(jù)概覽
045 信用風(fēng)險(xiǎn)定位系統(tǒng)(銀行版)
046 作戰(zhàn)指揮室
047 公司名稱(chēng)大數(shù)據(jù)可視化平臺(tái)
048 大數(shù)據(jù)可視化展板通用模板
049 工廠信息監(jiān)控臺(tái)
050 大數(shù)據(jù)可視化展示平臺(tái)通用模板
051 通用大數(shù)據(jù)可視化展示平臺(tái)模板
052 智慧社區(qū)內(nèi)網(wǎng)比對(duì)平臺(tái)
053 通用大數(shù)據(jù)可視化展示平臺(tái)模板
054 公安大數(shù)據(jù)監(jiān)控平臺(tái)2
055 物流大數(shù)據(jù)服務(wù)平臺(tái)
056 大數(shù)據(jù)統(tǒng)計(jì)展示大屏
057 大屏數(shù)據(jù)統(tǒng)計(jì)
058 大屏數(shù)據(jù)智慧中心統(tǒng)計(jì)
059 物聯(lián)網(wǎng)平臺(tái)數(shù)據(jù)統(tǒng)計(jì)
060 廣西電子商務(wù)公共服務(wù)平臺(tái)大數(shù)據(jù)中心
061 智慧小區(qū)大數(shù)據(jù)分析
062 數(shù)據(jù)概覽演示案例
063 商品運(yùn)營(yíng)大數(shù)據(jù)
064 設(shè)備環(huán)境監(jiān)測(cè)平臺(tái)
065 游戲可視化大數(shù)據(jù)用戶(hù)案例
066 系統(tǒng)架構(gòu)可視化監(jiān)控
067 xx區(qū)智慧旅游綜合服務(wù)平臺(tái)
068 中國(guó)電信廳店?duì)I業(yè)效能分析
069 智能看板新中心
070 翼興消防監(jiān)控
071 市突發(fā)預(yù)警平臺(tái)實(shí)時(shí)監(jiān)控
072 大連市突發(fā)預(yù)警實(shí)時(shí)監(jiān)控
073 觀測(cè)站綜合監(jiān)控平臺(tái)
074 酒機(jī)運(yùn)行狀態(tài)
075 數(shù)據(jù)可視化展示
076 交管大數(shù)據(jù)人臉識(shí)別系統(tǒng)
078 河長(zhǎng)制大數(shù)據(jù)顯示平臺(tái)
079 保稅區(qū)A倉(cāng)監(jiān)控中心
080 北斗車(chē)聯(lián)網(wǎng)大數(shù)據(jù)平臺(tái)
081 北京市執(zhí)法信息平臺(tái)
082 南方草木商品交易[超級(jí)大屏]
083 興福公安綜合監(jiān)管大屏
084 壓力容器大屏
085 車(chē)輛綜合管控平臺(tái)
086 物流大數(shù)據(jù)展示系統(tǒng)
087 農(nóng)業(yè)產(chǎn)業(yè)大數(shù)據(jù)指揮倉(cāng)系統(tǒng)
088 HTML大數(shù)據(jù)綜合分析平臺(tái)模板
089 警務(wù)綜合監(jiān)控管理平臺(tái)HTML模板
090 企業(yè)營(yíng)收大數(shù)據(jù)統(tǒng)計(jì)可視化大屏
091 ECharts擴(kuò)展示例自定義視圖
092 酷炫大屏數(shù)據(jù)可視化模板
093 辦稅渠道運(yùn)行狀態(tài)大數(shù)據(jù)監(jiān)控平臺(tái)
094 大數(shù)據(jù)統(tǒng)計(jì)展示大屏
095 交通大數(shù)據(jù)展示平臺(tái)
096 智慧農(nóng)業(yè)大數(shù)據(jù)展示
097 程序員數(shù)據(jù)可視化大屏展示
098 銷(xiāo)售大數(shù)據(jù)分析
099 英雄聯(lián)盟LPL比賽數(shù)據(jù)可視化
100 新型冠狀肺炎實(shí)時(shí)監(jiān)測(cè)大屏
3、號(hào)外
- 如果我的博客對(duì)你有幫助、如果你喜歡我的博客內(nèi)容,請(qǐng) “??點(diǎn)贊” “??評(píng)論” “??收藏” 一鍵三連哦!
- 【????????????關(guān)注我| 獲取更多源碼 | 定制源碼】大學(xué)生畢設(shè)模板、期末大作業(yè)模板 、Echarts大數(shù)據(jù)可視化等! 「一起探討 ,互相學(xué)習(xí)」?。╲x:python812146)
- 以上內(nèi)容技術(shù)相關(guān)問(wèn)題??歡迎一起交流學(xué)習(xí)??????????????
到了這里,關(guān)于Flask+Echarts搭建全國(guó)疫情可視化大屏的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!