vue.js+echarts实现柱状图图表源码

大家好,今天给大家介绍一款,vue.js+echarts实现柱状图图表源码(图1)。送给大家哦,获取方式在本文末尾。

图1

源码完整,需要的朋友可以下载学习哦

图2

本源码编码:10139,需要的朋友,关注文章末尾公众号,搜索10139,即可获取。

<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,viewport-fit=cover">
		<link rel="icon" href="https://www.51qianduan.com/favicon.ico"> <title>vue中基于Echarts的y轴双正方向柱图组件</title>
		<script src="static/js/vue.min.js"></script>
		<script src="static/js/echarts-4.2.1.min.js"></script>
	</head>

	<body>
		<div id="app">
			<div style="margin: 30px 250px;">
				<p>
					介绍:y轴双正方向柱图,所谓双正方向,横轴上下展现出来的数据都是正值。横轴上方数据和为100%,下方是总数据中的一项展示。
				</p>
				<p>
					实现:主要在于对数据的处理上,对横轴下方的数据处理展示出正值,从而营造出双正方向的假象。
				</p>
			</div>
			<div id="myChart" :style="{height: '500px', margin: '0 200px'}"></div>
		</div>
		<script type="text/javascript">
			new Vue({
				el: '#app',
				data() {
					return {
						id: '',
						myChart: null,
						deptArray: ['人力资源部', '业务开发部', '资料处理部', '广告宣传部', '后勤保障部', '信用审核部', '公共关系部'],
						huiFuList: [8, 7, 9, 5, 4, 5, 3],
						noHuiFuList: [7, 5, 4, 6, 3, 1, 2],
						chaoShiList: [-3, -2, -3, 0, -1, -2, -4]
					}
				},
				computed: {

				},
				methods: {
					drawBar() {
						// 基于准备好的dom,初始化echarts实例
						let myChart = echarts.init(document.getElementById('myChart'))
						// 绘制图表
						myChart.setOption({
							title: {
								left: 'center',
								text: '某工厂各部门对某事件关心反馈值统计',
							},
							tooltip: {
								trigger: 'axis',
								axisPointer: {
									type: 'shadow',
									crossStyle: {
										color: '#999'
									}
								},
								// 重点内容:自定义悬浮显示的内容及格式
								formatter: function(params) {
									let title = '';
									let rows = '';
									if (params.length > 0) {
										title = params[0].name;
									}
									for (let i = 0; i < params.length; i++) {
										if (params[i].value > 0) {
											rows += '<br />' + params[i].seriesName + ': ' + params[i].value
										} else {
											rows += '<br />' + params[i].seriesName + ': ' + (-params[i].value)
										}
									}
									return title + rows;
								}
							},
							toolbox: {},
							legend: {
								data: ['未反馈', '已反馈', '超时反馈'],
								// 图例排列方向,纵排
								orient: 'vertical',
								// 图例位置
								right: 50,
								top: 50,
								bottom: 20,
							},
							// 图表(上、下、左、右边界的宽度)
							grid: {
								left: '3%',
								right: '15%',
								bottom: '3%',
								containLabel: true
							},
							calculable: true,
							xAxis: [{
								type: 'category',
								data: this.deptArray,
								axisLabel: {
									interval: 0,
									fontFamily: 'Arial',
									fontWeight: 'bold',
									fontSize: 12,
									align: 'center',
									// 重点内容:自定义横轴显示的内容及格式
									formatter: function(value) {
										let str = "";
										let num = 4; //每行显示字数
										let valLength = value.length; //该项x轴字数
										let rowNum = Math.ceil(valLength / num); // 行数

										if (rowNum > 1) {
											for (let i = 0; i < rowNum; i++) {
												let temp = "";
												let start = i * num;
												let end = start + num;

												temp = value.substring(start, end) + "\n";
												str += temp;
											}
											return str;
										} else {
											return value;
										}
									}
								},
							}],
							yAxis: [{
								name: "反馈数/个",
								type: 'value',
								show: false,
								interval: 2,
								axisLabel: {
									formatter: '{value}'
								}
							}],
							series: [{
									name: '已反馈',
									type: 'bar',
									stack: '反馈数',
									data: this.huiFuList,
									barWidth: 30, //柱图宽度
									itemStyle: {
										normal: {
											label: {
												show: true, //开启显示
												position: 'inside', //在内部显示
												textStyle: { //数值样式
													color: 'black',
													fontSize: 12
												},
												formatter: function(params) {
													if (params.value > 0) {
														return params.value;
													} else {
														return ' ';
													}
												},
											}
										}
									},
									color: '#74BB44'
								},
								{
									name: '未反馈',
									type: 'bar',
									stack: '反馈数',
									data: this.noHuiFuList,
									barWidth: 30, //柱图宽度
									itemStyle: {
										normal: {
											label: {
												show: true, //开启显示
												position: 'inside', //在内部显示
												textStyle: { //数值样式
													color: 'black',
													fontSize: 12
												},
												formatter: function(params) {
													if (params.value > 0) {
														return params.value;
													} else {
														return ' ';
													}
												},
											}
										}
									},
									color: '#F70909'
								},
								{
									name: '超时反馈',
									type: 'bar',
									stack: '反馈数',
									data: this.chaoShiList,
									barWidth: 30, //柱图宽度
									itemStyle: {
										normal: {
											label: {
												show: true, //开启显示
												position: 'inside', //在内部显示
												textStyle: { //数值样式
													color: 'black',
													fontSize: 12
												},
												formatter: function(params) {
													if (params.value < 0) {
														return -params.value;
													} else {
														return ' ';
													}
												},
											}
										}
									},
									color: '#9900FF'
								}
							]
						})
					}
				},
				beforeMount() {

				},
				mounted() {
					this.drawBar()
				},
				watch: {
					'message'() {

					}
				}
			})
		</script>
	</body>
</html>

本源码编码:10139,需要的朋友,关注文章末尾公众号,搜索10139,即可获取。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值