Echarts基础图表 -- 柱形图

首先老规矩,在使用Echarts时,要先引用Echarts,此时我们有两种方式(上次忘了说一下了,这次补上),一种是标签化单文件引入,介绍曲线图的时候就是用这种方式,第二种就是用模块化单文件引入,cmd或者amd都可以,但是需要注意的是Echarts默认是amd,如果需要cmd引入,需要将它进行cmd模块化后再引入。在这里为了方便,我们还是选择第一种方法引入Echarts文件。

<script type="text/javascript" src="js/echarts3.js" ></script>

引用图表库后,我们先创建个div作为容器,该容器将会挂载绘制的图表,然后我们设置一下宽高,需要注意的是,如果容器是隐藏的话,Echarts可能会获取不到容器的宽高而导致初始化失败,此时,我们可以明确指定容器的width和height,或者在容器显示后手动调用Echarts的resize方法。

<div id="mycharts" style="width: 600px;height: 400px;"></div>

将当前容器传进去,创建一个Echarts实例

var mycharts = echarts.init(document.getElementById('mycharts'));

接下来是定义图表的配置项,在这里就要说一下我要做什么样的图表了,还记得前几天的NSA蠕虫病毒勒索事件吗,这次我打算做个柱形图统计下受到影响的各大机构个数、以及损失的金额(当然了,数据是非真实的),在做这个柱形图的时候,我们要注意的是,**虽然这个柱形图仍然是两个维度x和y,但是因为要统计个数和金额,所以我们需要两个y轴。**下面请看核心代码:

var option = {
	title:{
		text:'NSA永恒之蓝蠕虫病毒柱形图', //标题
		subtext:'数据非真实',//副标题
		left:'center'
	},
	legend:{
		data:['波及总数量','损失总金额'],//图例名称,与数据列series中的name一一对应
		top:'bottom'
	},
	tooltip:{
		trigger:'axis',//设置提示框的触发类型为坐标轴触发
		axisPointer:{//坐标轴指示器配置项(指示坐标轴当前刻度)
			type:'shadow' //这里设置它的类型为阴影指示器
		}
	},
	xAxis:{
		type:'category',
		data:['教育科研机构','医疗卫生机构','商业中心','交通运输机构','宗教设施']
	},
	yAxis:[//y轴 这里由于要统计人数跟金额,所以设置两条轴,series则可以设置轴的index值来使用相应的轴
		{
			name:'人数(个)',
			splitLine:{//这是坐标轴在grid区域中的分割线,grid组件后续会介绍
				show:false //这里由于每个y轴的刻度都会有一条分割线,横跨grid区域,而这里有两个y轴,导致线会比较乱,不利于用户观看,因此把它去掉
			}
		},
		{
			name:'金额(元)',
			splitLine:{
				show:false
			}
		}
	],
	series:[
		{
			type:'bar',//图表的类型
			name:'波及总数量',// 图表的名字,也可以说是图表的系列名称,跟图例一一对应
			yAxisIndex:0,//用哪条y轴
			data:[4316,706,3014,2686,85]
		},
		{
			type:'bar',
			name:'损失总金额',
			yAxisIndex:1,
			data:[43161000,7064541,268610000,30141000,851100]
		},
	]
};

最后一步,设置图表配置项

mycharts.setOption(option);

这样,一个NSA永恒之蓝蠕虫病毒柱形图就出来了
pictrue1输入图片说明 但是其实我们还是可以对它进行进一步的优化,比如说提示框样子看起来不是很好看,我们优化一下它,增加以下代码:

    backgroundColor:'#27727B',//修改背景颜色
	padding:10,//加个内边距
	formatter:function(params,ticket,callback){//格式化一下提示框的显示,这里用到了html的字符串拼接
		var html = '';//html模板
		if(params !== null){
			html = '<span style = "font-size:16px;">'+ params[0].name +'</span><br/>';
			for (var i = 0; i <= params.length - 1; i++) {
				if(params[i].seriesIndex === 0){//数量
					html += '<span style = "color:'+ params[i].color +';margin-right:5px;">\u25CF</span><span>'+ params[i].seriesName +':<b>'+ params[i].value +'</b> 人</span><br/>';
				}else{//金额
					html += '<span style = "color:'+ params[i].color +';margin-right:5px;">\u25CF</span><span>'+ params[i].seriesName +':<b>'+ params[i].value +'</b> 元</span><br/>';
				}
			}
		}
		setTimeout(function(){
			callback(ticket,html);//拼接完模板后触发回调将模板传进去,然后更新提示框
		},0);
	}

或者我们可以修改下柱子的颜色

color:['#60C0DD','#F0805A','#F4E001','#D7504B','#C6E579']//加个全局颜色列表,echarts会从这个列表中依次循环取出颜色作为系列颜色

当然也可以修改形状,为series数据列中的每一个图表加上图形样式属性,修改下样式即可,比如加个圆角跟阴影

itemStyle:{
	normal:{
		barBorderRadius:[5,5,0,0],
		shadowColor: 'rgba(0, 0, 0, 0.5)',
		shadowBlur: 1
	}
},

最后为了让用户一目了然,我们可以把柱形图的数据信息也显示在图表上,比如下面这样,在每个图表中加上图形文本标签属性,不过需要注意的是,因为柱形图之间间隙有限,如果有些数据信息比较长,那么就会发生重叠,所以显示与否还需要自己权衡。

label:{
	normal:{
		show:true,
		position:'top',
		formatter:'{b}\n{c}人'
	},
}

刷新一下,我们就可以看到最终的图表出来了
pictrue2输入图片说明 由睿江云提供,想了解更多,请登陆www.eflycloud.com

转载于:https://my.oschina.net/u/3363053/blog/1083114

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ECharts 是一个基于 JavaScript 的开源可视化库,支持多种类型的图表,包括 3D 柱形图。而 Liquidfill 则是 ECharts 中的一个插件,可以用来创建水球图,即圆形的图表,同时支持动画效果。 要创建一个 3D 柱形图,需要在 ECharts 中引入 echarts-gl(ECharts 的 WebGL 渲染扩展库)和 echarts-liquidfill 插件。代码示例: ```js // 引入所需的模块 import * as echarts from 'echarts'; import 'echarts-gl'; import 'echarts-liquidfill'; // 初始化 ECharts 实例 const chart = echarts.init(document.getElementById('chart')); // 定义数据 const data = [ { name: 'A', value: [0, 0, 5] }, { name: 'B', value: [1, 0, 6] }, { name: 'C', value: [2, 0, 8] }, { name: 'D', value: [0, 1, 7] }, { name: 'E', value: [1, 1, 2] }, { name: 'F', value: [2, 1, 9] }, { name: 'G', value: [0, 2, 3] }, { name: 'H', value: [1, 2, 1] }, { name: 'I', value: [2, 2, 4] }, ]; // 定义配置项 const option = { grid3D: {}, xAxis3D: { type: 'category', data: ['X', 'Y', 'Z'], }, yAxis3D: { type: 'category', data: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'], }, zAxis3D: {}, series: [{ type: 'bar3D', data: data.map(item => ({ value: item.value.concat(item.value[2]), itemStyle: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: '#00aaff', }, { offset: 1, color: '#00ffaa', }]), }, })), shading: 'color', barSize: 1, opacity: 0.8, }, { type: 'liquidFill', data: data.map(item => ({ value: item.value[2] / 10, itemStyle: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: '#00aaff', }, { offset: 1, color: '#00ffaa', }]), }, })), shape: 'circle', label: { show: true, fontSize: 16, color: '#fff', formatter: '{b}', }, }], }; // 使用配置项生成图表 chart.setOption(option); ``` 上述代码中,`data` 数组定义了每个柱形图的名称和坐标位置,`option` 对象则定义了图表的配置项。其中,`grid3D`、`xAxis3D`、`yAxis3D` 和 `zAxis3D` 用于定义 3D 坐标系,`series` 则用于定义 3D 柱形图和水球图。柱形图的样式可以通过 `itemStyle` 属性进行设置,而水球图则可以通过 `liquidFill` 类型的系列来创建。 最后,使用 `setOption` 方法将配置项传入,即可在页面中生成 3D 柱形图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值