更新于:

模块E代码

数据抽取步骤

需要将可视化所需数据先抽取出来,才能使用图表展示。

  1. 启动 bigdata3 上的 app4.js api模拟运行环境
1
2
3
cd /usr/local/src/express
node app4.js
node app5.js

出现 listening on 8990 的提示则启动成功。(注:比赛期间比赛环境会准备好后端API请求,无需自行开启,此步骤适用于自行练习时启动相关模拟环境)

  1. 启动 postman ,按图例操作,抽取数据为json格式保存到本地:
  • 启动 postman

image.png

  • 将获取模式更改为 POST

image.png

  • 获取地址为 http://192.168.152.122:8990/api/selectData,设置请求body的用户名和密码:

image.png

  • 将获取内容更改为 Raw 格式,并保存文件

image.png

image.png

  • 将保存 json 数据放到项目包里

image.png

  • 删除首尾 "data" 字样,保留中括号内内容

image.png

image.png

  1. 新建Scala工程,编写 Scala 代码,处理相关数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import org.apache.log4j.{Level, Logger}  
import org.apache.spark.sql.SparkSession

object EchartRead {
def main(args: Array[String]): Unit = {
// 关闭日志
Logger.getLogger("org").setLevel(Level.OFF)
Logger.getLogger("akka").setLevel(Level.OFF)
// 创建SparkSession
val spark = SparkSession.builder()
.appName("GGG")
.master("local")
.getOrCreate()

// 读取json文件 需要根据你的文件实际存放位置进行更改
val df1 = spark.read.json("C:\\Users\\xs\\IdeaProjects\\myspark01\\response.json")
// 将DataFrame注册为临时视图
df1.createOrReplaceTempView("test1")
// 打印DataFrame的schema
df1.printSchema()
// 查询前五大省份的订单总额 查询sql语句根据题目要求更改
val df2 = spark.sql("select provinceName, sum(finalTotalAmount) as sp from test1 group by provinceName order by sp desc limit 5")
df2.show()
// 查询后五大省份的订单总额 查询sql语句根据题目要求更改
val df3 = spark.sql("select provinceName, sum(finalTotalAmount) as sp from test1 group by provinceName order by sp asc limit 5")
df3.show()
}

}

运行相关代码,将对应数据填入可视化前端代码数据区域中:

可视化示例代码

参考文档

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./static/js/echarts.min.js"></script>
</head>
<body>
<!--
<div>
<script> (柱状/条形)="bar",折线="line",饼="pie",漏斗="funnel", </script>
</div> -->
<div id="main" style="width: 500px;height:400px;"></div>
<div id="main2" style="width: 500px;height: 400px;"></div>
<div id="main3" style="width: 500px;height:400px;"></div>
<div id="main4" style="width:500px;height:400px;"></div>
<div id="main5" style="width: 500px;height:400px"></div>
<div id="main6" style="width: 500px;height:400px;"></div>
<div id="main7" style="width:500px;height: 400px;"></div>
<script>
var myChart=echarts.init(document.getElementById('main'))
var option={
title:{text:"雷达",x:"center"},
legend:{y:"bottom"},
tooltip:{},
radar:{indicator:[{name:"A",max:50},{name:"B",max:50},{name:"C",max:50},{name:"D",max:50},{name:"E",max:50}],shape:"circle"},
series:[{
type:"radar",areaStyle:{},
data:[{name:"one",value:[35,15,42,28,25]}]
}]
}
myChart.setOption(option)
</script>
<script>
var myChart2=echarts.init(document.getElementById('main2'))
var option2={
title:{text:"柱百分比",x:"center"},
legend:{y:"bottom"},
tooltip:{},
xAxis:{data:["A","B","C","D","E"]},
yAxis:{},
series:[{
name:"two",type:"bar",label:{ show:true,position:"top",formatter:"{b}\n{c}"},
data:[40,36,15,58,56]
}]
}
myChart2.setOption(option2)
</script>
<script>
var myChart3=echarts.init(document.getElementById('main3'))
var option3={
title:{text:"饼t图",x:"center"},
legend:{y:"bottom"},
tooltip:{},
series:[{
name:"饼",type:"pie",
label:{ formatter:"{b}{d}%"},
data:[{name:"A",value:45},{name:"B",value:56},{name:"C",value:34},{name:"D",value:42},{name:"E",value:35}]
}]
}
myChart3.setOption(option3)
</script>

<script>
var myChart4=echarts.init(document.getElementById('main4'))
var option4={
title:{text:"条形",x:"center"},
legend:{y:"bottom"},
tooltip:{},
yAxis:{data:["A","B","C","D","E"]},
xAxis:{},
series:[{
name:"four",type:"bar",data:[15,6,20,15,17]
}]
}
myChart4.setOption(option4)
</script>

<!-- -----------------------------------------------散点-------------------------------------------- -->
<script>
var myChart5=echarts.init(document.getElementById('main5'))
var option5={
title:{text:"散点图",x:"center"},
legend:{y:"bottom"},
tooltip:{},
xAxis:{type:"value",name:"x轴"},
yAxis:{type:"value",name:"y轴"},
series:[{
type:"scatter",
data:[[10,8],[8,12],[16,6],[12,10],[8,15]]
}]
}
myChart5.setOption(option5)
</script>
<!-- <script>
var myChart5=echarts.init(document.getElementById('main5'))
var data=[[10,20],[20,30],[30,40],[40,50],[50,60]]
var option5={
title:{text:"散点图",x:"center"},
xAxis:{name:"x轴"},
yAxis:{name:"y轴"},
series:[{
type:"scatter",
data:data,
symbolSize:10,
itemStyle:{
color:"bule"
}
}]
}
myChart5.setOption(option5)
</script> -->
<!-- <script>
var myChart6=echarts.init(document.getElementById('main6'))
var hours=["1点","2点","3点","4点","5点","6点"]
var data=[[0,1,1],[0,2,0],[0,4,2],[1,0,3],[2,0,3],[2,2,1],[0,1,4],[3,1,0],[0,4,2],[2,1,0],[2,1,1],[1,4,0]]
var option6={
title:{text:"单轴散点",x:"center"},
tooltip:{position:"top"},


option6.singleAxis.push({
type:"category",
boundaryGap:flase,

}),
series:[]
}
</script> -->

<!-- ----------------------------------------玫瑰---------------------------------------------------- -->

<script>
var myChart6=echarts.init(document.getElementById('main6'))
var option6={
title:{text:"玫瑰图",x:"center"},
legend:{y:"bottom"},
tooltip:{},
series:[{
name:" 玫瑰",
type:'pie',
//半径
radius:[50,100],
center:['50%','50%'],
//扇形文字位置
label:{show :true,
// position:'inside'},里面
//position:'center',中间
position:'outside'},
//外面
//花型
roseType:"area",
//控制不规则
itemStyle:{
broderRadius:6
},
label:{formatter:" {b} {d}% "},
data:[
{name:'one',value:34},
{name:'two',value:45},
{name:'three',value:42},
{name:'four',value:32},
{name:'five',value:45},
{name:'six',value:23}
]
}]
}
myChart6.setOption(option6)
</script>
<script>
var myChart7=echarts.init(document.getElementById('main7'))
var option7={
title:{text:"折线",x:"center"},
legend:{y:"bottom"},
tooltip:{},
xAxis:{data:["A","B","C","D","E"]},
yAxis:{},
series:[{
name:"折线",
type:"line",
data:[12,13,14,15,16]
}]
}
myChart7.setOption(option7)
</script>
<div id="main8" style="width: 500px;height:400px;"></div>
<script>
var myChart8=echarts.init(document.getElementById('main8'))
var option8={
title:{text:"各地区2020年消费总额占比",x:"center"},
legend:{y:"bottom"},
tooltip:{},
series:[{
type:"pie",
roseType:"area",
radius:[50,100],
center:['50%','50%'],
label:{ formatter:" {b} {d}%"},
data:[
{name:"dongbei",value:869},
{name:"dongbuyanhai",value:959},
{name:"huabei",value:439},
{name:"xinan",value:508},
{name:"zhongbu",value:980}
]
}]
}
myChart8.setOption(option8)
</script>
<div id="main9" style="width: 500px;height:400px;"></div>
<script>
var myChart9=echarts.init(document.getElementById('main9'))
var option9={
title:{text:"2020年消费额最高的十个省份",x:"center"},
legend:{y:"bottom"},
tooltip:{},
yAxis:{data:["jiangsu","sichuan","hubei","hunan","henan","fujian","yunan","shanxi","guangdong","heilongjiang"]},
xAxis:{},
series:[{
name:"消费额",
type:"bar",
data:[308,306,290,284,259,255,244,241,223,219]
}]
}
myChart9.setOption(option9)
</script>
<div id="main10" style="width: 500px;height:400px;"></div>
<script>
var myChart10=echarts.init(document.getElementById('main10'))
var option10={
title:{text:"2020年各地区消费额中位数",x:"center"},
legend:{y:"bottom"},
tooltip:{},
xAxis:{data:["dongbei","dongbuyanhai","huabei","zhongbu","xinan"]},
yAxis:{},
series:[{
name:"消费额",
label:{formatter:" {b} \n {c}"},
type:"bar",
data:[10,10.5,10,10,8]
}]
}
myChart10.setOption(option10)
</script>
<!-- <div id="main11" style="width: 500px;height:400px;"></div>
<script>
console.log("")
console.log([])
console.log([])
var myChart11=echarts.init(document.getElementById('main11'))
var option11={
title:{text:"",x:"center"},
leged:{y:"bottom"},
tooltip:{},
series:[{
name:"",
type:"pie",
label:{ formatter:"{b} {d}%"},
data:[{name:"",value:},{name:"",value:},{name:"",value:},{name:"",value:},{name:"",value:}]
}]
}
myChart11.setOption(option11)
</script> -->

<div id="main12" style="width: 600px;height:600px;"></div>
<div id="main13" style="width: 600px;height:600px;"></div>
<div id="main14" style="width: 600px;height:600px;"></div>
<div id="main15" style="width: 600px;height:600px;"></div>
<div id="main16" style="width: 600px;height:600px;"></div>
<div id="main17" style="width: 600px;height:600px;"></div>
<script>
// console.log("")
// console.log([])
// console.log([])
var myChart12=echarts.init(document.getElementById('main12'))
var option12={
title:{text:"正负条形图",x:"center"},
legend:{data:["A","B","C"],y:"bottom"},
tooltip:{
trigger:'axis',
axisPointer:{
type:'shadow'
}
},
grid:{
left:"3%",
right:"4%",
bottom:"3%",
containLabel:true
},
xAxis:[{
type:'value'
}],
yAxis:[{
type:'category',
axisTick:{
show:false
},
data:["1","2","3","4","5","6","7"]
}],
series:[{
name:"A",
type:"bar",
label:{
normal:{
show:true,
position:'inside'
}
},
data:[23,13,43,23,53,21,54]
},
{
name:"C",
type:"bar",
stack:"总量",
label:{
normal:{
show :true,
}
},
data:[31,31,42,21,42,21,42]
},
{
name:"B",
type:"bar",
stack:"总量",
label:{
normal:{
show:true,
position:"left"
}
},
data:[-21,-41,-45,-23,-53,-21,-24]
}]
}
myChart12.setOption(option12)
</script>
<!-- 到17 -->
<!-- ------------------------罕见----------------------------------------------- -->
<script>
var myChart13=echarts.init(document.getElementById('main13'))
var option13={
title:{text:"漏斗图",x:"center"},
tooltip:{},
legend:{y:"bootm"},
calculable:"true",
// 演算
series:[{
name:"漏斗",
type:"funnel",
width:"40%",
data:[
{value:20,name:"A"},
{value:40,name:"B"},
{value:60,name:"C"},
{value:80,name:"D"},
{value:100,name:"E"}
]
},
{
name:"金字塔",
type:"funnel",
x:"50%",
// 控制两个图之间的距离
sort:"ascending",
// 倒过来很重要
itemStyle:{
normal:{
label:{
position:"left"
}
}
},
data:[
{value:20,name:"A"},
{value:40,name:"B"},
{value:60,name:"C"},
{value:80,name:"D"},
{value:100,name:"E"}
]
}]
}
myChart13.setOption(option13)
</script>
<!-- ------------------------------------echarts详细版------------------------------------------------ -->
<script>
var myChart14=echarts.init(document.getElementById('main14'))
var option3={
title:{text:"测试",x:"center"},
legend:{orient:"vertical",
// 朝向排列垂直
x:"left",
data:["A","B","C","D","E"]
// 这里有或者下面series里面name进行标记
},
tooltip:{},
series:[{
name:"饼",type:"pie",
label:{ formatter:"{b}{d}%"},
data:[{name:"A",value:45},{name:"B",value:56},{name:"C",value:34},{name:"D",value:42},{name:"E",value:35}]
}]
}
myChart3.setOption(option3)
</script>
</script>
</body>
</html>