历史测试·(可视化往年例题)
- 选择题(每题2分,共40分)
- 下列( )不包含结构化数据。
A.数据库表 B. 电影视频 C. Excel表格 D. 网页表单
- 下面不是暖色的是( )。
A.红 B. 橙 C. 浅蓝 D. 紫
- 下面不是大数据分析算法的是( )。
A.机器学习 B. 聚类 C. 关联 D. 转换
- 小王在界面上设计了很多图表,能够显示很多统计结果,用处比较大,设计也很美观,用户对此并不满意,认为没有突出主题,可能是因为不符合可视化设计的( )标准。
A. 表达力强 B. 有效性强 C. 简洁易用 D. 有美感
- Excel中对某个表格的某个位置进行了引用(比如:=A3),纵向拖动行号不会进行自动扩展的是( )。
A. =A3 B. =$A3 C. =A$3 D. =B4
- 下面( )可以用来表示连续数据的变化状态。
A. 柱状图 B. 折线图 C. 堆积图 D. 饼图
- Excel中,需要对D3到F6之间所有的单元格求和,下面正确的是( )。
A. =sum(D1:F3) B. =sum(D3:F6) C. =sum(D3, F6) D. =sum(D3; F6)
- 下面( )不是eChartst图表的主要组成部分(大小写不区分)。
A. toolbarname B. grid C. title D. xAxis
- eCharts饼图中,不需要进行配置的部分是()。
A. x轴 B.数据系列 C.数据 D.图例
- eCharts散点图中,采用“symbolSize: function (data) {}”的方法控制图上点的大小,这是采用了()的方式。
A.成员函数 B.调用函数 C.回调函数 D.类函数
- 下面做法中正确的是()。
A.在一个饼图中用不同颜色表示不同类型,不同个数的多组数据
B.在一个柱状图中显示两组不同个数,不同类别的数据
C.在不改变x轴label的情况下,散点图x轴默认的意义是数据类别
D.一个线状图可以用来表示相同类型的两组数据
- 设置eCharts散点图的数据如下:
[[1,1], [1,2],[1,3]];
有如下代码:
symbolSize: function (data){
return data[0]
}
以上代码的运行效果是()。
A.数据离散分布在同一条竖线上;数据点大小一样;
B.数据离散分布在同一条横线上;数据点大小一样;
C.数据离散分布在同一条竖线上;数据点大小不一样;
D.数据离散分布在同一条横线上;数据点大小不一样。
- Javascript中,有:var data = [3, {A: 1, B: 2, C: 3}, {A: 4, B: 5, C:{C: 6}}],则data[2].C是()。
A. {C: 6} B. {A: 1, B: 2, C: 3} C. {A: 1, B: 2, {C: 3}} D. 3
- 在BS架构(网站)的信息系统中,前端浏览器通过()协议与后端服务端进行交互。
A.HTTP B. Web Server C. JSON D. Ajax
- 前端表单请求的url是:“<form action = "http://127.0.0.1:5000/cmd" method = "post">”下面哪个能够正常相应前端表单的请求。
A.@app.route('/cmd:5000')
B. @app.route('/127.0.0.1/cmd')
C. @app.route('/cmd', methods=['GET'])
D. @app.route('/cmd', methods=[ 'POST'])
- 需要在后台动态改变返回前台的eCharts图表的标题(title),需要( )。
A.在相应route函数中采用return返回eCharts图表的标题
B. 在模板文件head标签中,定义变量{{title}}
C. 在模板文件head标签中,定义eCharts图表标题的字符串
D. 在模板文件head标签中,定义eCharts图表标题的变量,并在渲染函数(render_template)中对变量进行赋值
- flask模板文件中,数组变量Arr的定义正确的是( )。
- {{Arr}} B. {{Arr|safe}} C. {{Arr[]}} D. {[Arr]}
- 下面( )与前后端分离的Web开发模式无关。
A. Ajax B. sprintboot C. Restful D. MyBatis
- 在Tableau中导入不同学生的学院、姓名、年龄如下:
电信学院 | 张三 | 17 |
电信学院 | 李四 | 18 |
艺术学院 | 王五 | 19 |
轨道学院 | 卢六 | 17 |
音乐学院 | 刘七 | 18 |
音乐学院 | 赵八 | 19 |
如果需要将学院类型进行分类显示,即,将电信学院和轨道学院显示为“工科学院”,将艺术学院和音乐学院显示为“文科学院”,那么可以采用()方法。
A. 分类 B. 分级 C. 分组 D. 自动分组
- 用Tableau实现学生姓名、年龄表格的可视化,那么下面正确的是()。
A.姓名和年龄都是维度
B.姓名和年龄都是度量
C.姓名是维度,年龄是度量
D.姓名是度量,年龄是维度
二、根据要求,完成下列各题(21题20分,22题30分,每问10分;23题10分;共60分)
- 根据提供的Excel表格,完成下面任务:
(1)生成柱状图,统计三个班级的平均成绩;
(2)生成饼图,统计每个班级人数在所有学生人数中的占比。
要求:在同一个表单(sheet)中生成图表,并提交电子档Excel文件。
- 根据提供的Excel表格,完成下列任务:
(1)用eCharts编写网页,绘制折线图,横轴显示基金名称、纵轴表示基金的净值;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="echarts.js"></script>
</head>
<body>
<div id="lineChart" style="width: 600px;height:400px;"></div>
<script>
var myChart = echarts.init(document.getElementById('lineChart'));
var option = {
xAxis: {
type: 'category',
data: ['基金1', '基金2', '基金3']
},
yAxis: {
type: 'value'
},
series: [{
data: [820, 932, 901],
type: 'line'
}]
};
myChart.setOption(option);
</script>
</body>
</html>
(2)用eCharts编写网页,绘制饼图,统计各基金净值在所有基金净值总和中的占比;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="echarts.js"></script>
</head>
<body>
<div id="pieChart" style="width: 600px;height:400px;"></div>
<script>
var myChart = echarts.init(document.getElementById('pieChart'));
var option = {
series: [{
name: '净值占比',
type: 'pie',
radius: '50%',
data: [
{value: 820, name: '基金1'},
{value: 932, name: '基金2'},
{value: 901, name: '基金3'}
]
}]
};
myChart.setOption(option);
</script>
</body>
</html>
(3)采用Tableau,生成柱状图,横轴显示基金名称、纵轴表示基金的净值。
要求:编写网页时,须提交电子档html和js(如果有js的话)文件;Tableau可视化提供生成图表后的界面截图。
提示:
图表变量 = echarts.init(document.getElementById(..));
参数变量 = { legend: { data: [.. , ..] },
xAxis: { type: 'value/category' , data: [.. , ..]},
yAxis: {type: 'value/category', data: [.. , ..] },
series: [
{
name: '..',
type: 'bar/line/scatter/pie',
data: [.. , ..] / [{ name: '..', value: '..'}, ..]/ [[.. , ..],[ .. , ..], ..]
}
]};
图表变量.setOption(参数变量);
- 读取Excel数据表格,结合flask,按要求生成图表:
- 前台表单中包括图表显示框和提交按钮,用户在浏览器地址栏中输入默认地址http://127.0.0.1:5000/时,读取csv表格,以柱状图显示六种产品的净值,横轴代表产品的名称,纵轴代表产品的净值;
- 点击提交,则读取csv表格,并在前端网页上以柱状图的形式,显示富荣基金的三种产品的净值,横轴代表产品的名称,纵轴代表产品的净值。
要求:提交电子档html、js(如果有js的话)和python源代码文件。
基础操作题准备练习
用ECharts编写网页:
网页代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!-- 自适应布局 定义宽度为设备宽度 -->
<!-- <meta name="viewport" content="width=device-width, initial-scale=2.0"> -->
<title>样例网页</title>
<script src="draw.js"></script>
<style>
.box {
width:1000px;
height: 600px;
/*根据屏幕实际大小设置合适值 */
border: 1px solid black;
background: rgba(179, 40, 40, 0.1);
}
</style>
</head>
<body>
<div class="box" id='g1'></div>
<script>
draw('g1');
</script>
</body>
</html>
绘图:
柱状图 折现图 点状图 饼图
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script src="echarts.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<div id="main2" style="width: 600px;height:400px;"></div>
<script>
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '我的第一幅ECharts可视化图'
},
tooltip: {},
legend: {
data:['各产品销量情况']
},
xAxis: {
data: ["产品A","产品B","产品C","产品D","产品E"]
},
yAxis: {},
series: [{
name: '销量',
// type: 'bar', //柱状图
// type: 'line', //折线图
type:'scatter', //点图
data: [900, 700, 550, 1000, 200]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
<script>
var myChart = echarts.init(document.getElementById('main2'));
var option = {
title: {
text: '各商品销量占比',
subtext: 'A商场情况分析',
left: 'center'
},
tooltip: {
trigger: 'item',
},
legend: {
orient: 'vertical',//垂直排列
left: 'left',
data: ['A商品', 'B商品', 'C商品', 'D商品',]
},
series: [{
name: '所售商品',
type: 'pie',
label: {
show: true,
formatter: '{b} : ({d}%)',
position: 'inside'
},
data: [
{ value: 343, name: 'A商品' },
{ value: 250, name: 'B商品' },
{ value: 509, name: 'C商品' },
{ value: 108, name: 'D商品' },
],
},]
};
myChart.setOption(option);
</script>
</body>
</html>
饼图基础代码
<script>
var myChart = echarts.init(document.getElementById('main2'));
var option = {
series: [{
name: '所售商品',
type: 'pie',//饼图
data: [
{ value: 343, name: 'A商品' },
{ value: 250, name: 'B商品' },
{ value: 509, name: 'C商品' },
{ value: 108, name: 'D商品' },
],
},]
};
myChart.setOption(option);
</script>
Flask 部分:
.html文件
<!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>
<style>
.box{
width: 500px;
height :280px;
border: 1px solid black;
/* display: inline-block; */
/* margin: auto; */
text-align: left;
word-wrap:break-word;
}
</style>
<script src="jquery-3.6.0.js"></script>
<script src="echarts(5.3).js"></script>
</head>
<body>
<!-- form submit -->
<div class="box" id="showarea"></div>
<input id="button1" type="button" value="Get JSON">
<script>
$(document).ready(
function(){
console.log('ready!!!');
}
);
// Get 自行构建URL
$("#button1").click(
function(){
$.get("http://127.0.0.1:5000/gendataget",
{"dataname": $("#datanameinput").val(), "datanum": $("#datanuminput").val()},
function(data){
httpbackstr(data);
}
);
}
);
function httpbackstr(param){
var jsstruct = JSON.parse(param);
console.log(jsstruct);
showBar("showarea", jsstruct["xarr"], jsstruct["yarr"]);
}
function showBar(graphId, xarr, yarr){
var myChart = echarts.init(document.getElementById(graphId));
var option = {
yAxis: { type: 'value' },
xAxis: { type: 'category' ,
data: xarr},
series: [{
name: '数据',
type: 'line',
data: yarr,
barWidth: '60%'}]
};
myChart.setOption(option);
}
</script>
</body>
</html>
.py文件
from flask import Flask
from flask_cors import *
import json,sys
import numpy as np
import pandas as pd
app = Flask(__name__)
CORS(app)
# 传统表单通信
# http://127.0.0.1:5000/formlogin?username=ffff&password=wwwww
@app.route('/gendataget', methods=['GET'])
def gendataget():
path=sys.path[0] #当前文件路径
print(path)
df = pd.read_csv(path+"\\data.csv", header=0)
print(df)
xarr = df.iloc[:, 0].to_list()
yarr = df.iloc[:, 1].to_list()
return gendata(xarr, yarr)
def gendata(xarr, yarr):
newdict = {
"xarr": xarr,
"yarr": yarr
}
jsonstr = json.dumps(newdict)
print(jsonstr)
return jsonstr
if __name__=="__main__":
print('flask running')
app.run(host='127.0.0.1', port = 5000, debug=True, use_reloader=False)
data.csv文件
名称,数量
喜鹊,23
猫咪,12
狗子,2
黑天鹅,10
灰天鹅,1