Echarts折线图之区域面积图

今天写echarts发现有个比较坑的地方,我使用了areaStyle 这个属性,把折线图设置成了如图的样式
在这里插入图片描述
但是客户想要的是如下图在这个样式
在这里插入图片描述
这里要敲重点了,想实现这个样式必须使用series-》line-》stack这个属性,这个属性会叠加数据,代码块如下

series:[
	{
		type:"line",
		data:data1,(最小值)
		areaStyle:{
			coloe:#000(这个颜色放你的背景色)
		},
		stack:"confidence-band",
	},
	{
		type:"line",
		data:data2,(最大值)
		areaStyle:{
			coloe:#000(这个颜色放你想要的区域颜色)
		},
		stack:"confidence-band",
	},
]
上面的代码会实现上图的样式,但是你会发现,图中的最大值已经发生了变化,和你传入的值不一样,图中的最大值变成了最小值加最大值,所以你需要做一个处理,给最大值赋值之前,用获取的最大值减去最小值付给最大值。
```javascript
	let data3 = []
	for(let i = 0 ; i<data1.length; i++){
		data3.push(data2[i]-data1[i])
	}

如果你发现这俩个他们无法相减,那就因为变量类型的问题,你可以强制转换成number


	let data3 = []
	for(let i = 0 ; i<data1.length; i++){
		data3.push(Number(data2[i])-Number(data1[i]))
	}
	然后在eachart代码中最大值使用data3
	series:[
	{
		type:"line",
		data:data1,(最小值)
		areaStyle:{
			coloe:#000(这个颜色放你的背景色)
		},
		stack:"confidence-band",
	}{
		type:"line",
		data:data3,(处理过的最大值)
		areaStyle:{
			coloe:#000(这个颜色放你想要的区域颜色)
		},
		stack:"confidence-band",
	}]
这俩个数据先后顺序不要放反了,第一个是最小值,第二个是最大值,不然你的图像会变样。

解决了这个问题后,又会出现新的问题,鼠标滑过折线图会有提示信息,你发现你的最大值变成了data3了,在这里你需要在formatter里面写一个function来改变他。简单来说就是获取到function(param)中的data1和data3然后把他俩相加,给你的最大值赋值。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的 echarts 折线图背景区域划分的完整代码示例: HTML: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts 折线图背景区域划分</title> <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.2.2/echarts.min.js"></script> </head> <body> <div id="chart" style="width: 600px; height:400px;"></div> </body> </html> ``` JS: ```javascript var myChart = echarts.init(document.getElementById('chart')); // x 轴数据 var xData = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']; // y 轴数据 var yData1 = [10, 20, 30, 40, 50, 60, 70]; var yData2 = [70, 60, 50, 40, 30, 20, 10]; // 定义背景区域的起始和结束点 var areaStart = yData1.map(function(item) { return item - 5; }); var areaEnd = yData2.map(function(item) { return item + 5; }); // 基于准备好的dom,初始化echarts实例 var option = { title: { text: '折线图背景区域划分' }, legend: { data: ['数据1', '数据2'] }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: { type: 'category', boundaryGap: false, data: xData }, yAxis: { type: 'value' }, series: [{ name: '数据1', type: 'line', data: yData1, itemStyle: { normal: { color: '#4cb1cf' } } }, { name: '数据2', type: 'line', data: yData2, itemStyle: { normal: { color: '#f06c00' } } }, { type: 'line', data: areaStart, itemStyle: { normal: { color: 'transparent' } }, lineStyle: { normal: { type: 'dashed' } }, areaStyle: { normal: { color: '#f3f3f3' } } }, { type: 'line', data: areaEnd, itemStyle: { normal: { color: 'transparent' } }, lineStyle: { normal: { type: 'dashed' } }, areaStyle: { normal: { color: '#f3f3f3' } } }] }; // 使用刚指定的配置项和数据显示表。 myChart.setOption(option); ``` 上述代码中,我们使用了 echarts 的 `areaStyle` 属性来定义背景区域的样式,使用 `lineStyle` 属性来定义虚线的样式,使用 `itemStyle` 属性来设置数据线的样式。同时,我们也使用了 JavaScript 数组的 `map` 方法来定义背景区域的起始和结束点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值