【可视化大屏开发】8. 可视化大屏配置之静态图折线图1定制
折线图1引入html
一、需求
引入就业行情折线图到html中
二、代码实现
- 官网找到类似实例, 适当分析,并且引入到HTML页面中
- 根据需求定制图表
到官方网站上去找合适的实例
去掉不需要的
index.js中添加立即执行函数
// 折线图1模块制作
(function() {
// 1. 实例化对象
// 2.指定配置
// 3. 把配置给实例对象
})();
index.html
<selection class="mainbox">
<div class="column">
<div class="panel bar">
<h2>柱形图-职位需求-关键词搜索</h2>
<div class="chart"></div>
<div class="panel-footer"></div>
</div> <div class="panel line">
<h2>折线图-就业行业</h2>
<div class="chart"></div>
<div class="panel-footer"></div>
</div> <div class="panel pie">
<h2>饼图-就业行业</h2>
<div class="chart"></div>
<div class="panel-footer"></div>
</div> </div>
修改折线图代码
// 折线图1模块制作
(function() {
// 1. 实例化对象
var myChart = echarts.init(document.querySelector(".line .chart"));
// 2.指定配置
var option = {
tooltip: {
trigger: 'axis'
},
legend: {
data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
name: 'Email',
type: 'line',
stack: 'Total',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Union Ads',
type: 'line',
stack: 'Total',
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Video Ads',
type: 'line',
stack: 'Total',
data: [150, 232, 201, 154, 190, 330, 410]
},
{
name: 'Direct',
type: 'line',
stack: 'Total',
data: [320, 332, 301, 334, 390, 330, 320]
},
{
name: 'Search Engine',
type: 'line',
stack: 'Total',
data: [820, 932, 901, 934, 1290, 1330, 1320]
}
]
};
// 3. 把配置给实例对象
myChart.setOption(option);
})();
线条过多,留下两个,剩下的删除
series: [
{
name: 'Email',
type: 'line',
stack: 'Total',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Search Engine',
type: 'line',
stack: 'Total',
data: [820, 932, 901, 934, 1290, 1330, 1320]
}
]
效果
保存图标不需要,在option里删除部分代码后
// 2.指定配置
var option = {
tooltip: {
trigger: 'axis'
},
legend: {
data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
name: 'Email',
type: 'line',
stack: 'Total',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Search Engine',
type: 'line',
stack: 'Total',
data: [820, 932, 901, 934, 1290, 1330, 1320]
}
]
};
折线图1定制-grid网格
一、需求
对比设计稿,折线图需要修改成无边框的。
二、代码实现
折线图需要修改成无边框的,需要修改grid代码
index.js
// 设置网格样式
grid: {
top: '20%',
left: '3%',
right: '4%',
bottom: '3%',
show: true,// 显示边框
borderColor: '#012f4a',// 边框颜色
containLabel: true // 包含刻度文字在内
},
再次参看效果:看不清楚,先把边框的颜色改成红色,试试
// 设置网格样式
grid: {
top: '20%',
left: '3%',
right: '4%',
bottom: '3%',
show: true,// 显示边框
borderColor: 'red',// 边框颜色
containLabel: true // 包含刻度文字在内
},
再次参看效果:
修改图例组件中的文字颜色 #4c9bfd, 距离右侧 right 为 10%
查看说明
Documentation - Apache ECharts
代码实现:
在 legend 内增加以下代码,注意:保留原来的data数据:
// 2.指定配置
var option = {
tooltip: {
trigger: 'axis'
},
legend: {
data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine'],
textStyle: {
color: '#4c9bfd' // 图例文字颜色
},
// 这个10% 必须加引号
right: '10%' // 距离右边10%
},
已靠右
折线图1定制-X轴与Y轴相关配置
一、需求
- x轴相关配置
- 刻度去除
- x轴刻度标签字体颜色:#4c9bfd
- 剔除x坐标轴线颜色(将来使用Y轴分割线)
- 轴两端是不需要内间距 boundaryGap
- y轴的定制
- 刻度去除
- 字体颜色:#4c9bfd
- 分割线颜色:#012f4a
二、代码实现
需求1:刻度去除
在xAxis 内,增加代码:
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisTick: {
show: false // 去除刻度线
},
},
需求2:x轴刻度标签字体颜色:#4c9bfd
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisTick: {
show: false // 去除刻度线
},
axisLabel: {
color: '#4c9bfd' // 文本颜色
},
},
需求3:剔除x坐标轴线颜色(将来使用Y轴分割线)
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisTick: {
show: false // 去除刻度线
},
axisLabel: {
color: '#4c9bfd' // 文本颜色
},
axisLine: {
show: false // 去除轴线
},
},
需求4:轴两端是不需要内间距 boundaryGap
继续在xAxis 内,更改代码:
boundaryGap: false,
如果原来已经是false,无需更改
y轴的定制
需求5:刻度去除
需求7:分割线颜色:#012f4a
yAxis: {
type: 'value',
axisTick: {
show: false // 去除刻度
},
splitLine: {
lineStyle: {
color: '#012f4a' // 分割线颜色
}
},
axisLabel: {
color: '#4c9bfd' // 文本颜色
},
},
折线图1定制-折线样式定制
一、需求
对比原设计稿,设计两条线形图定制
- 颜色分别:#00f2f1 #ed3f35
- 把折线修饰为圆滑
二、代码实现
两条线形图定制
需求1:颜色分别:#00f2f1 #ed3f35
代码实现:找到option,在option里的最前面,增加代码:
// 2.指定配置
var option = {
// 通过这个color修改两条线的颜色
color: ["#00f2f1", "#ed3f35"],
tooltip: {
trigger: 'axis'
},
需求2:把折线修饰为圆滑
Documentation - Apache ECharts
index.js修改,线条更顺滑
series: [
{
name: 'Email',
type: 'line',
stack: 'Total',
data: [120, 132, 101, 134, 90, 230, 210],
// true 可以让我们的折线显示带有弧度
smooth: true,
},
{
name: 'Search Engine',
type: 'line',
stack: 'Total',
data: [820, 932, 901, 934, 1290, 1330, 1320],
// true 可以让我们的折线显示带有弧度
smooth: true,
}
]
需求3:把数据叠加删掉
stack: 'Total', // 删掉
折线图1定制-数据更改
一、需求
- 配置x轴的数据(更换成月)
- 配置图标数据
- 图表跟随屏幕自动的去适应
二、代码实现
需求1: 配置x轴的数据
index.js
xAxis: {
type: 'category',
boundaryGap: false,
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
axisTick: {
show: false // 去除刻度线
},
需求2: 配置图标数据
需求实现:找到 series:
更换第一组数据:data: [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120]
将name改成“新增粉丝”
更换第二组数据:
name:‘新增游客’,
data: [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]
index.js
series: [
{
name: '国内需求数',
type: 'line',
data: [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120], // true 可以让我们的折线显示带有弧度
smooth: true,
},
{
name: '国外需求数',
type: 'line',
data: [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79],
// true 可以让我们的折线显示带有弧度
smooth: true,
}
]
效果
图形效果出来了,但发现了新的BUG——legend消失
修改legend代码即可
legend: {
// data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine'],
textStyle: {
color: '#4c9bfd' // 图例文字颜色
},
// 这个10% 必须加引号
right: '25%' // 距离右边25%
}
在上图位置增加以下代码,实现让图标跟随屏幕自动去适应
// 3. 把配置给实例对象
myChart.setOption(option);
//让图标跟随屏幕去自动适应
window.addEventListener("resize",function(){
myChart.resize();
});
折线图1定制-tab栏切换
一、需求
- 新增需求 点击 2020年 2021年 数据发生变化
原设计稿
二、代码实现
需求1: 新增需求 点击 2020年 2021年 数据发生变化
(1)在index.html文件中,找到panel line(需要定制的折线图)增加两个a
<a href="javascript:;">2022</a>
<a href="javascript:;">2023</a>
<selection class="mainbox">
<div class="column">
<div class="panel bar">
<h2>柱形图-职位需求-关键词搜索</h2>
<div class="chart"></div>
<div class="panel-footer"></div>
</div> <div class="panel line">
<h2>折线图-国内外需求分析
<a href="javascript:;">2022</a>
<a href="javascript:;">2023</a>
</h2> <div class="chart"></div>
<div class="panel-footer"></div>
</div> <div class="panel pie">
<h2>饼图-就业行业</h2>
<div class="chart"></div>
<div class="panel-footer"></div>
</div> </div>
效果
(2)到less文件,找到panel盒子中的 h2
在h2中添加代码a
}
}
h2 {
height: 0.6rem;
color: #fff;
line-height: 0.6rem;
text-align: center;
font-size: 0.25rem;
font-weight: 400;
a{
color: #fff;
text-decoration: none;
margin: 0 0.125rem;
}
}
.chart {
height: 3rem;
}
}
//数字模块
效果
实际使用情况下,数据大多数使用ajax请求
以下是后台送过来数据(ajax请求过来的)
var yearData = [
{
year: '2022', // 年份
data: [ // 两个数组是因为有两条线
[24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],
[40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]
]
},
{
year: '2023', // 年份
data: [ // 两个数组是因为有两条线
[123, 175, 112, 197, 121, 67, 98, 21, 43, 64, 76, 38],
[143, 131, 165, 123, 178, 21, 82, 64, 43, 60, 19, 34]
]
}
];
需求1:tab栏切换事件
(1)在html文件中,引入jquery.js
<script src="js/flexible.js"></script>
<script src="js/echarts.min.js"></script>
<script src="js/jquery.js"></script>
<script src="js/index.js"></script>
</body>
(2)在index.js文件中,折线图1模块制作的立即执行函数的最后面,定义点击事件
// 3. 把配置给实例对象
myChart.setOption(option);
//4.让图标跟随屏幕去自动适应
window.addEventListener("resize",function(){
myChart.reset();
});
// 5.点击切换效果
$(".line h2").on("click", "a", function() {
alert(1);
});
})();
debug
折线图1-tab栏切换数据
一、需求
实现点击索引实现数据切换
二、代码实现
在 点击切换效果 中,增加以下代码进行测试
console.log($(this).index());
测试
该报错,暂时先忽略,报的是没有网络协议
在折线图1模块的立即执行函数中,增加以下代码:
// 折线图1模块制作
(function() {
// 1. 实例化对象
var myChart = echarts.init(document.querySelector(".line .chart"));
// 指定数据
var yearData = [
{
year: '2022', // 年份
data: [ // 两个数组是因为有两条线
[24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],
[40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]
]
},
{
year: '2023', // 年份
data: [ // 两个数组是因为有两条线
[123, 175, 112, 197, 121, 67, 98, 21, 43, 64, 76, 38],
[143, 131, 165, 123, 178, 21, 82, 64, 43, 60, 19, 34]
]
}
];
// 省略部分代码
// 5.点击切换效果
$(".line h2").on("click", "a", function() {
// alert(1);
console.log(yearData[$(this).index()]);
});
})();
(4)在点击事件中,增加以下代码
var obj = yearData[$(this).index()];
option.series[0].data = obj.data[0];
option.series[1].data = obj.data[1];
// 需要重新渲染
myChart.setOption(option);
点击2022
点击2023
(5)将页面默认显示2022年的数据,
将series:的数据更换成2022年的数据
第一组数据更换成:
data: yearData[0].data[0]
第二组数据更换成:
data: yearData[0].data[1]
index.js 更换默认数据为2022
series: [
{
name: '国内需求数',
type: 'line',
data: yearData[0].data[0],
smooth: true,
},
{
name: '国外需求数',
type: 'line',
data: yearData[0].data[1],
// true 可以让我们的折线显示带有弧度
smooth: true,
}
]
可视化大屏项目参考链接
【可视化大屏开发】1.基础开发环境准备_pblh123的博客-CSDN博客
【可视化大屏开发】2.基础项目配置及大屏布局_pblh123的博客-CSDN博客
【可视化大屏开发】3.大屏配置之数字模块配置_pblh123的博客-CSDN博客
【可视化大屏开发】4.大屏配置之地球模块配置_pblh123的博客-CSDN博客
【可视化大屏开发】5.大屏配置之Echarts入门学习_pblh123的博客-CSDN博客
【可视化大屏开发】6.可视化大屏配置之静态图柱形图1定制_pblh123的博客-CSDN博客
【可视化大屏开发】7.可视化大屏配置之静态图条形图定制_pblh123的博客-CSDN博客
【可视化大屏开发】8. 可视化大屏配置之静态图折线图1定制_pblh123的博客-CSDN博客
【可视化大屏开发】9. 可视化大屏配置之静态图折线图2定制_pblh123的博客-CSDN博客
【可视化大屏开发】10. 可视化大屏配置之静态图饼图1定制_pblh123的博客-CSDN博客
【可视化大屏开发】11. 可视化大屏配置之静态图饼图2定制_pblh123的博客-CSDN博客
【可视化大屏开发】12. 可视化大屏配置之静态图中国地图定制_pblh123的博客-CSDN博客
【可视化大屏开发】13. 可视化大屏配置之打通前后端更新静态图数据_pblh123的博客-CSDN博客
【可视化大屏开发】14. Maven打包可视化大屏项目-发布jar包_pblh123的博客-CSDN博客
【可视化大屏开发】15.可视化大屏项目-网络访问静态数据无法更新问题修复_pblh123的博客-CSDN博客
【可视化大屏开发】16. 可视化大屏项目共性优化问题_pblh123的博客-CSDN博客
17.可视化大屏配置之代码整理资源-CSDN文库
可视化大屏项目动态数据样例资源-CSDN文库