echart面积图不同区域用不同的颜色表示

系列文章目录

echart面积图不同区域用不同的颜色表示



前言

提示:这里可以添加本文要记录的大概内容:
echart面积图不同区域用不同的颜色表示


提示:以下是本篇文章正文内容,下面案例可供参考

一.代码示例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>echart 面积图段显示不同的颜色</title>
		<style>
			#main {
				width: 100%;
				height: 300px;
				margin: 10% auto;
			}
		</style>
	</head>
	<body>
		<div id="main"></div>
	</body>
</html>
<script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.min.js"></script>
<!--echart折线图-->
<script>
	var chartDom = document.getElementById('main');
	var myChart = echarts.init(chartDom);
	var option;

	var base = +new Date(2021, 9, 3);
	var oneDay = 24 * 3600 * 1000;
	var date = [];

	var data = [72, 24, 58, 95, 29, 35, 45, 25, 47, 85, 69, 36, 14, 85, 38, 75, 69, 63, 98, 33, 25, 46, 78, 99, 12, 67,
		100
	];

	for (var i = 1; i < data.length; i++) {
		var now = new Date(base += oneDay);
		date.push([now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'));
	}
	option = {
		tooltip: {
			trigger: 'axis',
			position: function(pt) {
				return [pt[0], '10%'];
			}
		},
		title: {
			left: 'center',
			text: 'echart面积图不同区域用不同的颜色表示',
		},
		toolbox: {
			feature: {
				dataZoom: {
					yAxisIndex: 'none'
				},
				restore: {},
				saveAsImage: {}
			}
		},
		xAxis: {
			show: true, //隐藏x轴
			splitLine: {
				show: false,
				lineStyle: {
					color: '#dadada'
				}
			}, //去除网格线
			type: 'category',
			boundaryGap: false,
			data: date, //设置x轴数据
			axisTick: {
				show: false //不显示刻度线
			},
			axisLine: {
				// 设置x轴颜色
				symbol:['none','arrow'],//设置箭头
				lineStyle: {
					color: '#4e6ef2',
					width: 2, //这里是为了突出显示加上的
				}
			}

		},
		yAxis: {
			show: true, //隐藏y轴
			type: 'value',
			boundaryGap: [0, '100%'],
			splitLine: {
				show: false,
				lineStyle: {
					color: '#dadada'
				}
			}, //去除网格线
			axisTick: {
				show: false //不显示刻度线
			},
			axisLine: {
				// 设置y轴颜色
				symbol:['none','arrow'],//设置箭头
				lineStyle: {
					color: '#4e6ef2',
					width: 2, //这里是为了突出显示加上的
				}
			}

		},
		//关闭图例
		legend: {
			show: false,
			data: []

		},
		//设置不同折现区间设置不同颜色
		visualMap: [{
			left: '95%',
			top: '40px',
			show: true, //显示图例
			pieces: [{
					lte: 30, //小于等于
					color: '#4e6ef2'
				},
				{
					gt: 30, //大于3 小于等于6
					lte: 80,
					color: 'green'
				},
				{
					gt: 80, //大于6
					color: 'red'
				},
			],
			seriesIndex: 0 //0表示第一条线 第二条线依次累加
		}],
		series: [{
			name: '模拟数据',
			type: 'line',
			symbol: 'none',
			sampling: 'lttb',
			itemStyle: {
				color: '#4e6ef2'
			},
			areaStyle: {
				color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
						offset: 0,
						color: '#4e6ef2'
					},
					{
						offset: 0.8,
						color: '#3385ff'
					},
					{
						offset: 1,
						color: 'red'
					},
				])
			},
			data: data
		}],
		grid: {
			left: '3%',
			right: '4%',
			bottom: '10%',
			containLabel: true
		}
	};

	option && myChart.setOption(option);
</script>

二.实现效果

在这里插入图片描述

在Python中计算片中不同颜色区域面积,通常需要使用像处理库,比如OpenCV。以下是基本的步骤和概念: 1. 读取片:首先使用OpenCV库读取片,将其转换为numpy数组。 2. 颜色分割:根据需要识别的颜色区域,选择合适的颜色空间(如RGB、HSV等)进行颜色分割。例如,如果要识别蓝色区域,可以将片转换到HSV颜色空间,并设置一个蓝色的阈值范围。 3. 二值化处理:将分割出的颜色区域转换为二值像,非目标颜色区域为0(黑色),目标颜色区域为255(白色)。 4. 寻找轮廓:使用OpenCV中的findContours函数,找到二值像中的轮廓。 5. 计算面积:遍历找到的轮廓,并使用contourArea函数计算每个轮廓的面积。 6. 面积过滤:根据实际需要过滤掉太小或太大的区域,避免计算错误或无关区域面积。 7. 结果输出:统计所有有效的面积,并输出结果。 示例代码框架如下: ```python import cv2 import numpy as np # 读取片 image = cv2.imread('image.jpg') # 转换颜色空间到HSV hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 设定颜色阈值范围 lower_color = np.array([lowerhue1, lowerhue2, lowerhue3]) upper_color = np.array([upperhue1, upperhue2, upperhue3]) # 进行颜色分割 mask = cv2.inRange(hsv_image, lower_color, upper_color) # 二值化处理 _, binary_image = cv2.threshold(mask, 127, 255, cv2.THRESH_BINARY) # 寻找轮廓 contours, _ = cv2.findContours(binary_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 计算面积并过滤 areas = [] for contour in contours: area = cv2.contourArea(contour) if area > min_area and area < max_area: # 根据需要设置面积阈值 areas.append(area) # 输出面积 print(f"Total area of color regions: {sum(areas)}") ``` 以上代码中的`lower_color`和`upper_color`需要根据具体颜色调整,`min_area`和`max_area`用于过滤面积
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值