当前位置:网站首页>其实特简单,教你轻松实现酷炫的数据可视化大屏
其实特简单,教你轻松实现酷炫的数据可视化大屏
2022-07-07 06:45:00 【Python数据挖掘】
大家好,今天给大家分享一个 Python 可视化大屏项目,GitHub 地址:https://github.com/TurboWay/big_screen
,
该项目结构简单使用方便,直接传数据就可以实现数据可视化大屏。喜欢记得收藏、关注、点赞。
注:文末提供技术交流、源码获取方式
安装
项目依赖第三方模块 flask
,因此我们需要先进行依赖安装,安装命令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask
。
部分源码分享
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author : way
# @Site :
# @Describe:
import json
class SourceDataDemo:
def __init__(self):
self.title = '大数据可视化展板通用模板'
self.counter = {
'name': '2018年总收入情况', 'value': 12581189}
self.counter2 = {
'name': '2018年总支出情况', 'value': 3912410}
self.echart1_data = {
'title': '行业分布',
'data': [
{
"name": "商超门店", "value": 47},
{
"name": "教育培训", "value": 52},
{
"name": "房地产", "value": 90},
{
"name": "生活服务", "value": 84},
{
"name": "汽车销售", "value": 99},
{
"name": "旅游酒店", "value": 37},
{
"name": "五金建材", "value": 2},
]
}
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": "0岁以下", "value": 47},
{
"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": "IOS", "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': '省份TOP',
'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 = '大数据可视化展板通用模板'
class CorpData(SourceDataDemo):
def __init__(self):
""" 按照 SourceDataDemo 的格式覆盖数据即可 """
super().__init__()
with open('corp.json', 'r', encoding='utf-8') as f:
data = json.loads(f.read())
self.title = data.get('title')
self.counter = data.get('counter')
self.counter2 = data.get('counter2')
self.echart1_data = data.get('echart1_data')
self.echart2_data = data.get('echart2_data')
self.echarts3_1_data = data.get('echarts3_1_data')
self.echarts3_2_data = data.get('echarts3_2_data')
self.echarts3_3_data = data.get('echarts3_3_data')
self.echart4_data = data.get('echart4_data')
self.echart5_data = data.get('echart5_data')
self.echart6_data = data.get('echart6_data')
self.map_1_data = data.get('map_1_data')
class JobData(SourceDataDemo):
def __init__(self):
""" 按照 SourceDataDemo 的格式覆盖数据即可 """
super().__init__()
with open('job.json', 'r', encoding='utf-8') as f:
data = json.loads(f.read())
self.title = data.get('title')
self.counter = data.get('counter')
self.counter2 = data.get('counter2')
self.echart1_data = data.get('echart1_data')
self.echart2_data = data.get('echart2_data')
self.echarts3_1_data = data.get('echarts3_1_data')
self.echarts3_2_data = data.get('echarts3_2_data')
self.echarts3_3_data = data.get('echarts3_3_data')
self.echart4_data = data.get('echart4_data')
self.echart5_data = data.get('echart5_data')
self.echart6_data = data.get('echart6_data')
self.map_1_data = data.get('map_1_data')
运行
首先,我们从 GitHub 上将项目下载到本地,当然也可以在公众号Python小二
后台回复big_screen
直接获取。
项目下载好后,我们进入项目根路径,如下所示:
然后,按住Shift
点鼠标右键
,接着选择在此处打开命令窗口(W)
,命令窗口打开后输入命令:python app.py
启动项目。
项目启动之后,我们直接在浏览器输入地址即可访问,下面看一下示例。
大数据可视化展板通用模板:http://127.0.0.1:5000
,如下所示:
4600 万企业数据大屏可视化:http://127.0.0.1:5000/corp
,如下所示:
厦门 10 万招聘数据(2020-09)大屏可视化:http://127.0.0.1:5000/job
,如下所示:
使用
编辑 data.py 中的 SourceData 类(或者新增类,新增的话需要编辑 app.py 增加路由,请参考 CorpData/JobData)
从任何地方读取你的数据,按照 SourceDataDemo 的数据格式,填充到 SourceData 类
运行 python app.py 查看数据变更后的效果
联系方式
目前开通了技术交流群,群友已超过3000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友,资料获取也可以加入
方式1、添加微信号:dkl88191,备注:来自CSDN
方式2、微信搜索公众号:Python学习与数据挖掘,后台回复:加群
边栏推荐
- 华为HCIP-DATACOM-Core_03day
- Information Security Experiment 3: the use of PGP email encryption software
- 章鱼未来之星获得25万美金奖励|章鱼加速器2022夏季创业营圆满落幕
- Port multiplexing and re imaging
- Jenkins automated email
- Selenium mouse sliding operation event
- 【云原生】DevOps(一):DevOps介绍及Code工具使用
- 二叉树高频题型
- Unittest simple project
- shake数据库中怎么使用Mongo-shake实现MongoDB的双向同步啊?
猜你喜欢
Unity uses mesh to realize real-time point cloud (I)
Where is the answer? action config/Interceptor/class/servlet
Jenkins modifies the system time
Summary of PMP learning materials
Huawei HCIP - datacom - Core 03 jours
PMP Exam Preparation experience systematically improve project management knowledge through learning
Locust performance test 5 (analysis)
PMP examination experience sharing
Cesium load vector data
[cloud native] Devops (I): introduction to Devops and use of code tool
随机推荐
Postman interface test (I. installation and use)
stm32和电机开发(从单机版到网络化)
When inputting an expression in the input box, an error is reported: incorrect string value:'\xf0\x9f... ' for column 'XXX' at row 1
5A summary: seven stages of PMP learning
答案在哪里?action config/Interceptor/class/servlet
Several stages of PMP preparation study
Nested (multi-level) childrn routes, query parameters, named routes, replace attribute, props configuration of routes, params parameters of routes
如何使用clipboard.js库实现复制剪切功能
esp8266使用TF卡并读写数据(基于arduino)
12、 Sort
Pycharm create a new file and add author information
Install pyqt5 and Matplotlib module
Storage of data in memory
Hard core sharing: a common toolkit for hardware engineers
Mysql database transaction learning notes
四、机器学习基础
How can I apply for a PMP certificate?
Original collection of hardware bear (updated on May 2022)
Unity uses mesh to realize real-time point cloud (I)
Pycharm importing third-party libraries