Echars 堆叠柱状图lable显示,但Tooltip保持数显示数量

以下仅供参考~
在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>ECharts</title>
		<!-- 引入 echarts.js -->
		<script src="https://lib.baomitu.com/echarts/4.7.0/echarts.js"></script>
	</head>

	<body>
		<!-- Dom容器 -->
		<div id="main" style="width: 600px;height:400px;"></div>
		<script type="text/javascript">
			var data = [{
					"name": "line01",
					"ngNum": 50,
					"okNum": 450
				},
				{
					"name": "line02",
					"ngNum": 100,
					"okNum": 300
				},
				{
					"name": "line03",
					"ngNum": 40,
					"okNum": 560
				},
				{
					"name": "line04",
					"ngNum": 30,
					"okNum": 360
				},
				{
					"name": "line05",
					"ngNum": 10,
					"okNum": 360
				}
			]
			function showEchars(){
				// 基于准备好的dom,初始化echarts实例
				var myChart = echarts.init(document.getElementById('main'));
				myChart.title = 'test'
				// 指定图表的配置项和数据
				var option = {
					color: ['#81C1DC', '#3488AD', '#00557C'], //设置颜色
					tooltip: {
						trigger: 'axis',
						axisPointer: { // 坐标轴指示器,坐标轴触发有效
							type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
						},
						formatter: function(params) { // 这里鼠标悬浮显示对应item的每项数值
							var relVal = params[0].name;
							relVal += '<br/>' + params[0].marker + params[0].seriesName + ' : ' + this.data[params[0].dataIndex].ngNum; // ng
							relVal += '<br/>' + params[1].marker + params[1].seriesName + ' : ' + this.data[params[0].dataIndex].okNum; // ok
							return relVal;
						},
					},
					// 顶部显示
					legend: {
						data: ['ng', 'ok']
					},
					// 设置下方图标的位置
					grid: {
						left: '3%',
						right: '4%',
						bottom: '3%',
						top: '7%',
						containLabel: true
					},
					// 设置X轴的参数
					xAxis: [{
						type: 'category',
						data: initDataName() // 这里是显示名称
					}],
					// 设置Y轴的参数
					yAxis: {
						type: 'value',
						max: 100, // 设置最大值是多少
						splitNumber: 5, // 设置分几段显示
						axisLabel: {
							show: true,
							interval: 'auto',
							formatter: '{value} %' // 给每个数值添加%
						},
						show: true
					},
					// 设置每个item的参数
					series: [{
							name: 'NG数',
							type: 'bar',
							stack: '总量',
							label: {
								show: true,
								position: 'inside',
								formatter: '{c}%' // 给计算后的数值添加%
							},
							//data: [13, 68.28, 85]
							data: initData('ngNum') // 计算对应的百分比
						},
						{
							name: 'ok数',
							type: 'bar',
							stack: '总量',
							label: {
								show: true,
								position: 'inside',
								formatter: '{c}%'
							},
							data: initData('okNum')
						}
					]
				};
				// 显示左侧名称
				function initDataName() {
					var nameList = []
					for (var i = 0; i < this.data.length; i++) {
						nameList.push(this.data[i].name)
					}
					return nameList
				}
				//计算ng和ok
				function initData(val) {
					var serie = [];
					for (var i = 0; i < this.data.length; i++) {
						var num = 0
						if (val == 'ngNum') { //计算ng
							num = this.data[i].ngNum
						} else if (val == 'okNum') { //计算ok
							num = this.data[i].okNum
						}
						var total = (parseFloat(this.data[i].ngNum) + parseFloat(this.data[i].okNum)).toFixed(2);
						var numcount = Percentage(num, total)
						serie.push(numcount);
					}
					return serie;
				}
				//计算两者占比
				function Percentage(num, total) {
					return (Math.round(num / total * 10000) / 100.00); // 小数点后两位百分比
				}
				// 使用刚指定的配置项和数据显示图表。
				myChart.setOption(option);
			}
			showEchars()
		</script>
	</body>

</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值