echarts条形图动态显示

1、实现效果
每次展示5个,轮流展示
在这里插入图片描述
2、实现思路
使用datazoom,一次展示5项数据,轮流展示每2s刷新一次。
条形图有两个柱子,一个蓝色柱子,一个灰色柱子,两个柱子重合,且蓝柱子在上面。
为了使左侧的类目和柱子同步变化,左侧类目不写成y轴标签,而写成柱子的标签,即在series里写标签
3、代码
定义一个盒子

<div class="chartStyle" ref="chartImplement"></div>

配置函数

initChartArea() {
				var timer = null;
				var myChart = echarts.init(this.$refs.chartImplement);
				myChart.clear();
				var option;
				var valueData = [200, 330, 300, 280, 350, 290, 180, 200, 330, 300, 280, ];
				var fullData = [400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, ];
				var categoryData = ['永安镇', '大泗镇', '白马镇', '胡庄镇', 'XXX镇', '官庄镇', '侏儒山', '永安镇', '大泗镇', '白马镇', '胡庄镇', ];
				option = {
					tooltip: {
						show: false,
					},
					grid: {
						top: '0%',
						left: '1%',
						right: '0%',
						bottom: '0%',
						containLabel: true
					},
					xAxis: {
						type: 'value',
						boundaryGap: [0, 0.01],
						splitLine: {
							show: false,
						},
						axisLabel: {
							show: false,
							color: 'transparent',
						},
					},
					yAxis: {
						type: 'category',
						data: categoryData,
						axisLabel: {
							show: true,
							color: 'transparent',
						},
						axisLine: {
							show: false,
						},
						axisTick: {
							show: false,
						}
					},
					// 自动滚动
					dataZoom: [ //滑动条
						{
							show: false, //是否显示滑动条
							yAxisIndex: 0,
							type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件
							startValue: 0, // 从头开始。
							endValue: 4 // 一次性展示5个。
						}
					],
					series: [{
							name: '亩数',
							type: 'bar',
							barWidth: 8,
							data: valueData,
							label: { //图形上的文本标签
								show: true,
								position: 'left', //标签的位置
								offset: [0, 0], //标签文字的偏移,此处表示向上偏移40
								formatter: function(data) {
									return data.name;
								},
								textStyle: {
									fontSize: 12,
									color: '#FFFFFF',
								},
							},
							itemStyle: {
								normal: {
									color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ // color在这里
										{
											offset: 0.1,
											color: '#0A374A'
										},
										{
											offset: 0.5,
											color: '#24A3D8'
										},
										{
											offset: 1,
											color: '#A4E4FF'
										}
									]),
									barBorderRadius: 4, //柱条圆角半径,单位px.

								}
							},
							zlevel: 1 //柱状图所有图形的 zlevel 值,
						},
						{
							name: '背景色',
							type: 'bar',
							barWidth: 8,
							barGap: '-100%',
							data: fullData,
							label: { //图形上的文本标签
								show: true,
								position: 'right', //标签的位置
								offset: [0, 0], //标签文字的偏移,此处表示向上偏移40
								formatter: function(data) {
									var traceValue;
									for (var i = 0; i < categoryData.length; i++) {
										if (data.name === categoryData[i]) {
											traceValue = valueData[i]
											break
										}
									}
									var arr = [
										'{a|' + traceValue + '}',
										'{b|亩}'
									]
									return arr.join('');
								},
								textStyle: {
									rich: {
										a: {
											fontSize: 12,
											color: '#FFFFFF',
											padding: [0, 0, 0, 10],
										},
										b: {
											fontSize: 12,
											color: '#FFFFFF',
											padding: [0, 0, 0, 5],
										},
									}
								},
							},
							itemStyle: {
								normal: {
									color: 'rgb(60, 83, 110,0.35)',
									barBorderRadius: 4, //柱条圆角半径,单位px.
								},

							},
						},
					]
				};
				//使用刚指定的配置项和数据显示图表。
				timer = setInterval(function() {
					// 每次向后滚动一个,最后一个从头开始。
					if (option.dataZoom[0].endValue == valueData.length - 1) {
						option.dataZoom[0].endValue = 4;
						option.dataZoom[0].startValue = 0;
					} else {
						option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1;
						option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1;
					}
					myChart.setOption(option, true);
				}, 2000);
				myChart.clear();
				myChart.setOption(option, true);
				window.addEventListener("resize", function() {
					myChart.resize();
				});

			},
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要生成一个echarts条形图,你可以使用以下代码作为参考: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>条形图</title> <!-- 引入 echarts.js --> <script src="../js/echarts.min.js"></script> </head> <body> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="main" style="width: 600px;height:400px;"></div> <script type="text/javascript"> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('main')); // 指定图表的配置项和数据 var option = { title: { text: 'ECharts入门示例', }, tooltip: {}, legend: { data: \['销量'\] }, xAxis: { data: \["麦当劳", "肯德基", "星巴克", "华莱士"\] }, yAxis: {}, series: \[{ name: '销量', type: 'bar', data: \[5, 20, 36, 10\] }\] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); </script> </body> </html> ``` 以上代码会生成一个默认的条形图,其中x轴表示不同的商家,y轴表示销量。你可以根据需要修改x轴的数据和y轴的数据来适应你的需求。 #### 引用[.reference_title] - *1* [ECharts——条形图](https://blog.csdn.net/qq_41422448/article/details/103932319)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【大数据可视化系列一】echarts自动轮播镂空条形图](https://blog.csdn.net/weixin_53741561/article/details/126854452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [echarts条形图](https://blog.csdn.net/qq_49732089/article/details/123356974)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zttbee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值