# 【大数据实战项目五】数据结果图形可视化

## 6 数据结果图形可视化

[En]

According to the pyramid of data analysis, the lowest data record, including collection (storage) and display and information transmission, has been completed in part 5, and then to the penultimate layer of the Great Pyramid, that is, the output and display of the data. The data needs to be sorted out, aggregated and visualized.

## 6.1 航班数据的时令特征

• 收集完飞行数据后，让我们从一个问题开始，讨论下一年最繁忙的月份。
[En]

after collecting flight data, let’s start with a question to discuss the busiest month of the next year.*

• 当一项衡量指标随时间循环时，季节性就诞生了，如假期、开学、假期等。
[En]

when a measurement circulates over time, seasonality is born, such as holidays, school starts, holidays, and so on.*

from SparkReady import  start_sparkspark = start_spark('C04S01',12,'8g')on_time_dataframe = spark.read.parquet('../data/on_time.parquet')on_time_dataframe.registerTempTable("on_time_dataframe")total_flights_by_month = spark.sql ("""   select cast(Month as int) , cast(Year as int) , count(*) as total_flights  from   on_time_dataframe   group by Year, Month order by Year, cast(Month as int)""")total_flights_by_month.show()

[En]

Since it has been arranged in numerical order, the output is as follows.

flights_chart_data = total_flights_by_month.rdd.map(lambda x : x.asDict())import pymongo_sparkpymongo_spark.activate()flights_chart_data.saveToMongoDB('mongodb://localhost:27017/example.flights_by_month')

@app.route("/total_flights")def total_flights():    total_flights = client.example.flights_by_month.find({},                                                         sort=[                                                             ('Year', 1),                                                             ('Month', 1)                                                         ])    return render_template('total_flights.html',total_flights=total_flights)

{% extends "index.html" %}
{% block body2 %}
<div>
<table class="table table-condensed table-striped" style="width: 200px;">
<th>月份th>
<th>总航班数th>
<tbody>
{% for month in total_flights %}
<tr>
<td>{{month.Month}}td>
<td>{{month.total_flights}}td>
tr>
{% endfor %}
tbody>
table>
div>

## 6.3 创建接口数据

@app.route("/total_flights.json")def total_flights_json():    total_flights = client.example.flights_by_month.find({},                                                         sort=[                                                             ('Year', 1),                                                             ('Month', 1)                                                         ])    return json_util.dumps(total_flights,ensure_ascii = False)

## 6.4 创建可视化图形

[En]

Once the interface data is ready, you can start drawing. The code you need to add is as follows.

@app.route("/total_flights_chart")def total_flights_chart():    total_flights = client.example.flights_by_month.find({},                                                         sort=[                                                             ('Year', 1),                                                             ('Month', 1)                                                         ])    return render_template('total_flights_chart.html', total_flights=total_flights)

{% extends "index.html" %}
{% block body2 %}
<style>.chart rect {
fill: steelblue;
}
.chart text {
fill: white;
font: 10px sans-serif;
text-anchor: middle;
}style>
<div>
<div id="chart"><svg class="chart">svg>div>
div>
<script src="/static/app.js">script>

var width = 960,    height = 350;var y = d3.scale.linear()    .range([height, 0]);var chart = d3.select(".chart")    .attr("width", width)    .attr("height", height);d3.json("/total_flights.json", function(data) {    var barColor = 'steelblue';    var maxY = d3.max(data, function(d) { return d.total_flights; });    y.domain([0, maxY]);    var varColor = function(d,) {        if(d['total_flights'] == maxY) { return modeColor; }        else { return defaultColor; }    }    var barWidth = width / data.length;    var bar = chart.selectAll("g")        .data(data)        .enter()        .append("g")        .attr("transform", function(d,) { return "translate(" + i * barWidth + ",0)"; });    bar.append("rect")        .attr("y", function(d) { return y(d.total_flights); })        .attr("height", function(d) { return height - y(d.total_flights); })        .attr("width", barWidth - 1)        .style("fill", barColor);    bar.append("text")        .attr("x", barWidth / 2)        .attr("y", function(d) { return y(d.total_flights) + 3; })        .attr("dy", ".75em")        .text(function(d) { return d.total_flights; });});

@app.route("/total_flights_chart_2")def total_flights_chart_2():    total_flights = client.example.flights_by_month.find({},                                                         sort=[                                                             ('Year', 1),                                                             ('Month', 1)                                                         ])    return render_template('total_flights_chart_2.html', total_flights=total_flights)

Original: https://blog.51cto.com/u_15713987/5464298
Author: 百木从森
Title: 【大数据实战项目五】数据结果图形可视化

(0)

### 大家都在看

• #### 论文解读：知识增强的预训练模型简介

©NLP论文解读 原创•作者 | 杨健 专栏 系列 概览 该专栏主要介绍自然语言处理领域目前比较前沿的领域—知识增强的预训练语言模型。通过解读该主题具备代表性的论文以及对应的代码，…

大数据 2023年5月28日
0175
• #### 如何利用 Python 批量合并 Excel？

大家好，今天分享一个利用​ &#x200B;Pandas&#x200B;​​进行数据分析的小技巧，也是之前有粉丝在后台进行提问的，即如何将多个​ &#x20…

大数据 2023年5月26日
0142
• #### 大数据学习—HIVE入门SQL学习

大数据 2023年11月14日
0124
• #### 大数据生态安全框架的实现原理与最佳实践（上篇）

前言 数字化转型大背景下，数据作为企业重要的战略资产，其安全的重要性不言而喻。 我们会通过系列文章，来看下大数据生态中安全框架的实现原理与最佳实践，系列文章一共两篇，包含以下章节：…

大数据 2023年5月26日
0196
• #### 使用IDEA的Redis插件连接Redis服务器

大数据 2023年11月15日
0107
• #### NLP藏头诗写作

这是一个类似MNIST和CIFAR分类的简单项目，可以看作NLP领域的入门。 数据预处理 我选的是史上最全的诗歌数据集https://github.com/chinese-poet…

大数据 2023年5月28日
0163

大数据 2023年5月26日
0131

NameNode的职责 序号 职责 1 负责客户端请求的响应 2 元数据的管理（查询，修改） 数据存储的形式 NameNode中的元数据信息以三种形式存储，如下 序号 方式 说明 …

大数据 2023年5月26日
0146
• #### apifox学习

apifox学习 原创 武汉淘淘2022-07-05 17:17:41博主文章分类：后端 ©著作权 文章标签 spring java 数据库 环境变量 对象类型 文章分类 Hado…

大数据 2023年5月25日
0165
• #### Hive常见高频面试题（上篇）

目录 1 背景介绍 2 常见面试问题 * 2.1 请简单介绍下Hive架构？ 2.2 Hive表有哪些类型及其区别？ 2.3 Hive创建表有哪些方式？ 2.4 Hive排序Ord…

大数据 2023年11月13日
0170
• #### 分组密码–DES详解

对称密码体制 对称密码体制：一种加密系统。其加密密钥和解密密钥是相同的，或者能够从其中之一推知另一个。对称密码体制根据对明文加密方式不同分为分组密码和流密码。 分组密码 分组密码按…

大数据 2023年6月3日
0200
• #### count()这么慢，我们该怎么办

大数据 2023年11月16日
0135
• #### 1: docker 安装 zeppeline

大数据 2023年5月29日
0157
• #### python观察日志(part28)–数据的加载与存储

python观察日志(part28)–数据的加载与存储 原创 GoatGui2022-06-02 20:59:11博主文章分类：python ©著作权 文章标签 pyt…

大数据 2023年5月26日
0146
• #### harbor安装

镜像下载、域名解析、时间同步请点击阿里云开源镜像站 系统版本：CentOS Linux release 7.6.1810 (Core) docker版本：20.10.12 dock…

大数据 2023年5月27日
0220
• #### 【Tanzu 社区版=TCE】 Mac 笔记本快速部署安装体验-(二)

【Tanzu 社区版=TCE】 Mac 笔记本快速部署安装体验-(二) 原创 Freddy_Shen2022-06-19 00:38:44©著作权 文章标签 docker 云原生 …

大数据 2023年5月26日
0167