Python 大数据实现动态可视化大屏
今天有幸又和大家来讨论一下,Python 大数据实现动态可视化大屏该怎么制作!
当然,被开除的标题都是玩笑话,让我们一起走进今天的讨论交流,希望大家都可以获得自己想要的分析展示。
前言
相信很多人都希望可以拥有一个展板用来每次公司年会做分析,那么今天就来了!
让我们一起来看看!
一、准备app.py
先创建一个文件名字叫:app.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/26 14:48
# @Author : way
# @Site :
# @Describe:
from flask import Flask, render_template
from data import SourceData
from data_corp import CorpData
from data_job import JobData
from flask import Flask,render_template
from flask import Flask, render_template
from data import SourceData
from data_corp import CorpData
from data_job import JobData
import os
app = Flask(__name__)
@app.route('/')
def index():
data = SourceData()
return render_template('index.html', form=data, title=data.title)
@app.route('/corp')
def corp():
data = CorpData()
return render_template('index.html', form=data, title=data.title)
@app.route('/job')
def job():
data = JobData()
return render_template('index.html', form=data, title=data.title)
if __name__ == "__main__":
app.run(host='127.0.0.1', debug=True)
有了这个以后,我们就可以启动我们的展板,接下来我们来准备数据
二、准备data.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/26 14:48
# @Author : way
# @Site :
# @Describe:
class SourceDataDemo:
def __init__(self):
self.title = '12312'
self.counter = {'name': '2020年总收入情况', 'value': 12581189}
self.counter2 = {'name': '2020年总支出情况', 'value': 3912410}
self.echart1_data = {
'title': '中铁四局业务分支',
'data': [
{"name": "路桥建设", "value": 47},
{"name": "基础建设", "value": 52},
{"name": "房地产建设", "value": 90},
{"name": "政府建设", "value": 84},
{"name": "海外建设", "value": 79},
{"name": "福利建设", "value": 37},
{"name": "高精尖建设", "value": 200},
]
}
self.echart2_data = {
'title': '四局力量省份分布',
'data': [
{"name": "浙江", "value": 47},
{"name": "上海", "value": 52},
{"name": "江苏", "value": 90},
{"name": "广东", "value": 84},
{"name": "北京", "value": 99},
{"name": "深圳", "value": 37},
{"name": "安徽", "value": 150},
]
}
self.echarts3_1_data = {
'title': '员工年龄分布',
'data': [
{"name": "20岁以下", "value": 7},
{"name": "20-29岁", "value": 52},
{"name": "30-39岁", "value": 90},
{"name": "40-49岁", "value": 84},
{"name": "50岁以上", "value": 99},
]
}
self.echarts3_2_data = {
'title': '中铁四局工程分布',
'data': [
{"name": "电子商务", "value": 10},
{"name": "教育", "value": 20},
{"name": "IT/互联网", "value": 20},
{"name": "金融", "value": 30},
{"name": "房地产", "value": 40},
{"name": "其他", "value": 50},
]
}
self.echarts3_3_data = {
'title': '员工兴趣分布',
'data': [
{"name": "汽车", "value": 4},
{"name": "旅游", "value": 5},
{"name": "财经", "value": 9},
{"name": "教育", "value": 8},
{"name": "软件", "value": 9},
{"name": "其他", "value": 9},
]
}
self.echart4_data = {
'title': '时间业绩趋势',
'data': [
{"name": "基础建设", "value": [3, 4, 3, 4, 3, 4, 3, 6, 2, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 6, 2, 4, 4]},
{"name": "房地产建设", "value": [5, 3, 5, 6, 1, 5, 3, 5, 6, 4, 6, 4, 8, 3, 5, 6, 1, 5, 3, 7, 2, 5, 8]},
],
'xAxis': ['01', '02', '03', '04', '05', '06', '07', '08', '09', '11', '12', '13', '14', '15', '16', '17',
'18', '19', '20', '21', '22', '23', '24'],
}
self.echart5_data = {
'title': '省份事业部分布',
'data': [
{"name": "浙江", "value": 2},
{"name": "上海", "value": 3},
{"name": "江苏", "value": 3},
{"name": "广东", "value": 9},
{"name": "北京", "value": 15},
{"name": "深圳", "value": 18},
{"name": "安徽", "value": 20},
{"name": "四川", "value": 13},
]
}
self.echart6_data = {
'title': '一线城市项目情况',
'data': [
{"name": "浙江", "value": 80, "value2": 20, "color": "01", "radius": ['59%', '70%']},
{"name": "上海", "value": 70, "value2": 30, "color": "02", "radius": ['49%', '60%']},
{"name": "广东", "value": 65, "value2": 35, "color": "03", "radius": ['39%', '50%']},
{"name": "北京", "value": 60, "value2": 40, "color": "04", "radius": ['29%', '40%']},
{"name": "深圳", "value": 50, "value2": 50, "color": "05", "radius": ['20%', '30%']},
]
}
self.map_1_data = {
'symbolSize': 100,
'data': [
{'name': '海门', 'value': 239},
{'name': '鄂尔多斯', 'value': 231},
{'name': '招远', 'value': 203},
]
}
@property
def echart1(self):
data = self.echart1_data
echart = {
'title': data.get('title'),
'xAxis': [i.get("name") for i in data.get('data')],
'series': [i.get("value") for i in data.get('data')]
}
return echart
@property
def echart2(self):
data = self.echart2_data
echart = {
'title': data.get('title'),
'xAxis': [i.get("name") for i in data.get('data')],
'series': [i.get("value") for i in data.get('data')]
}
return echart
@property
def echarts3_1(self):
data = self.echarts3_1_data
echart = {
'title': data.get('title'),
'xAxis': [i.get("name") for i in data.get('data')],
'data': data.get('data'),
}
return echart
@property
def echarts3_2(self):
data = self.echarts3_2_data
echart = {
'title': data.get('title'),
'xAxis': [i.get("name") for i in data.get('data')],
'data': data.get('data'),
}
return echart
@property
def echarts3_3(self):
data = self.echarts3_3_data
echart = {
'title': data.get('title'),
'xAxis': [i.get("name") for i in data.get('data')],
'data': data.get('data'),
}
return echart
@property
def echart4(self):
data = self.echart4_data
echart = {
'title': data.get('title'),
'names': [i.get("name") for i in data.get('data')],
'xAxis': data.get('xAxis'),
'data': data.get('data'),
}
return echart
@property
def echart5(self):
data = self.echart5_data
echart = {
'title': data.get('title'),
'xAxis': [i.get("name") for i in data.get('data')],
'series': [i.get("value") for i in data.get('data')],
'data': data.get('data'),
}
return echart
@property
def echart6(self):
data = self.echart6_data
echart = {
'title': data.get('title'),
'xAxis': [i.get("name") for i in data.get('data')],
'data': data.get('data'),
}
return echart
@property
def map_1(self):
data = self.map_1_data
echart = {
'symbolSize': data.get('symbolSize'),
'data': data.get('data'),
}
return echart
class SourceData(SourceDataDemo):
def __init__(self):
"""
按照 SourceDataDemo 的格式覆盖数据即可
"""
super().__init__()
self.title = '中铁四局年度业绩大数据分析'
现在数据就准备好了。
三.运行程序
我们点击一下app.py,开始运行程序!
出现下面的弹框。
现在我们应该复制http://127.0.0.1:5000/,并且在网页上面打开。
你会看到这样!
这是不是你想要的效果呢?可以根据你自己的喜好进行相应的更改!
总结
今天我们一起看了一下python的大数据大屏是怎么做的,创作不易,也希望大家多多支持,谢谢!