echarts 仪表盘正负效果

本文展示了如何在网页中使用ECharts库创建两个交互式的Gauge图表,一个顺时针旋转,一个逆时针,通过JavaScript控制显示状态并实时更新数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import * as echarts from 'echarts';

let chartDom = document.getElementById('main');
let myChart = echarts.init(chartDom);

let graw = 30;//正数顺时针,负数逆时针。
let flag = graw > 0;
let data = [Math.abs(graw)];
let option = {
  series: [
    {
      type: 'gauge',
      startAngle: 90,
      endAngle: -135,
      min: 0,
      max: 100,
      clockwise: false,
      progress: {
        show: true,
        width: 38
      },
      itemStyle: {
        color: 'red'
      },
      axisLine: {
        lineStyle: {
          width: 38,
          color: [[1, '#cdcdcd']]
        }
      },
      pointer: {
        show: !flag
      },
      axisTick: {
        show: false
      },
      splitLine: {
        show: false
      },
      axisLabel: {
        show: false
      },
      anchor: {
        show: !flag,
        showAbove: true,
        size: 30,
        itemStyle: {
          borde
### 实现ECharts中的交互式正负轴标签轮播效果 为了实现在ECharts中创建具有交互性的正负轴标签轮播效果,可以采用如下方法: #### 配置项调整 通过配置`dataZoom`组件来控制图表内部数据窗口的大小和位置,从而达到滚动的效果。对于正负柱状图而言,可以通过设置`series`内的`label`属性以及`axisPointer`事件监听器实现更丰富的互动体验。 ```javascript option = { xAxis: [ { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], axisLabel: {interval:0}, splitLine:{show:false} } ], yAxis: [ { type: 'value' }, { type: 'value', inverse: true, position:'right' // 设置右侧Y轴方向相反并置于右边 } ], series: [ { name:'positive', type:'bar', stack: 'total', itemStyle:{ color:'#3c8dbc' }, label: { show: true, formatter:function(params){ return params.value>0?params.value:''; },// 只显示正值部分的文字标注 }, emphasis: { focus: 'series' }, data:[12, 9, 7, 15, 16, 14, 10] }, { name:'negative', type:'bar', stack: 'total', itemStyle:{ color:'#f56954' }, label: { show: true, formatter:function(params){ return params.value<0?-params.value:''; } ,// 显示绝对值形式的负数作为文字标记 }, emphasis: { focus: 'series' }, data:[-1,-2,-3,-4,-5,-6,-7], yAxisIndex : 1 // 关联到第二个yAxis上 } ], toolbox: { feature: { saveAsImage: {}, dataView: {} } }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } }, dataZoom: [{ type: 'slider', startValue: 0, endValue: 3 }] }; ``` 此段代码定义了一个双Y轴(其中一个反转)的条形图,并启用了滑动缩放功能以便于查看不同范围的数据[^1]。 #### 添加动画与交互逻辑 为了让这个过程更加生动有趣,在初始化完成后还可以利用定时器函数每隔一段时间改变`startValue`和`endValue`参数值模拟自动播放行为;另外也可以绑定鼠标悬停事件触发特定动作比如暂停/恢复轮播等操作。 ```javascript let timer; function autoPlay() { clearInterval(timer); let startVal = myChart.getModel().getComponent('dataZoom').componentOption.startValue || 0; let endVal = myChart.getModel().getComponent('dataZoom').componentOption.endValue; function play() { if (endVal >= option.xAxis[0].data.length - 1) { startVal = 0; endVal = Math.min(3, option.xAxis[0].data.length - 1); // 控制每次展示的数量不超过总数 } else { ++startVal; ++endVal; } myChart.setOption({ dataZoom: [{startValue:startVal,endValue:endVal}] }); } timer = setInterval(play, 2000); // 每隔两秒切换一次视窗区间 } myChart.on('mouseover', () => clearInterval(timer)); myChart.on('mouseout', autoPlay); autoPlay(); ``` 这段脚本实现了当用户将光标移开图表区域时会启动自动翻页机制,而一旦再次移动上去就会停止当前正在进行的动作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值