网站首页 > 技术文章 正文
下面是一个使用Flask+Echarts+HTML+Ajax实现数据分析可视化看板的程序示例代码,您可以参考一下:
数据准备
这里我们假设有一个data.csv的数据文件,内部包含各类排名信息:
type,rank,move,trend
technology,1,0,up
energy,2,1.5,down
finance,3,2,up
education,4,0.5,up
...
我们使用Pandas库读取该数据,进行数据处理和清洗:
import pandas as pd
df = pd.read_csv('data.csv')
# 将数据按类型分类,计算同类型排名平均值和平均移动距离
df_grouped = df.groupby('type').agg({'rank': 'mean', 'move': 'mean'})
df_grouped.reset_index(inplace=True)
# 将数据按趋势、上升、下降分类,计算各类别所占比例
df_counts = df.groupby('trend').size().reset_index(name='counts')
HTML页面与Ajax
在Flask程序根目录下新建templates和static文件夹,分别用于存放HTML模板和静态文件。
HTML页面
在templates文件夹下创建layout.html模板文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{{ title }}</title>
{% block head %}
{% endblock %}
</head>
<body>
<div id="container" style="height: 600px"></div>
{% block scripts %}
{% endblock %}
</body>
</html>
在模板中,我们使用了模板中的占位符{{ title }}和{% block %}。{% block %}用于占位,供后续HTML文件继承和填充;{{ title }}用于替换<title>标签中的标题。
在templates文件夹下创建index.html文件,继承自layout.html模板:
{% extends 'layout.html' %}
{% block head %}
<!-- 引入Echarts库 -->
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.8.0/echarts.min.js"></script>
{% endblock %}
{% block scripts %}
<script type="text/javascript">
// 使用Ajax获取数据
function getData() {
$.ajax({
url: '/data',
type: 'GET',
dataType: 'json',
success: function (data) { drawCharts(data); },
error: function (xhr, status, error) { console.log('Error: ' + error); }
});
}
// 绘制图表
function drawCharts(data) {
var myChart = echarts.init(document.getElementById('container'));
// 绘制柱状图
var option_bar = {
title: { text: 'Rank by Type' },
legend: { data: ['Rank', 'Move'] },
tooltip: {},
xAxis: { data: data.types },
yAxis: {},
series: [
{ name: 'Rank', type: 'bar', data: data.ranks },
{ name: 'Move', type: 'bar', data: data.moves }
]
};
myChart.setOption(option_bar);
// 绘制饼图
var option_pie = {
title: { text: 'Trend' },
tooltip: {},
legend: { data: data.trends },
series: [
{
name: 'Trend',
type: 'pie',
data: data.trend_counts.map(function (ele) {
return { 'name': ele.trend, 'value': ele.counts };
}),
itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } }
}
]
};
myChart.setOption(option_pie);
}
// 页面载入时获取数据并绘制图表
$(document).ready(function () { getData(); });
</script>
{% endblock %}
在HTML中我们引入了Echarts库,并使用Ajax进行数据请求和处理。我们在页面载入后自动获取数据并绘制图表。
注意,这里我们使用了jQuery库,
猜你喜欢
- 2024-11-26 比pgload更快更方便写入大数据量至Greenplum的Spark Connector
- 2024-11-26 Excel之基础 - 常用函数整理来了,现用现查
- 2024-11-26 简单通俗说PageRank
- 2024-11-26 SQLSERVER全文检索(FULL-TEXT)语法
- 2024-11-26 「NLP」文本关键词提取的两种方法-TFIDF和TextRank
- 2024-11-26 职场办公中每天都要使用的6个Excel函数公式
- 2024-11-26 威廉王子在“神秘机构”待了三周...出来后变成了这样?
- 2024-11-26 Day60:用Python解析XML文件(xml.etree.ElementTree)
- 2024-11-26 Python 与 Excel 不得不说的事:这几个常用库你知道几个?
- 2024-11-26 职场人必备的15个excel函数公式,简单易懂,快速提高工作效率
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)