echarts踩坑记录---仪表盘设置仪表盘的位置

问题描述

工作中遇到了需要展示比值的图表需求,由于其他位置使用了echarts的图表,遂打消了使用el-progress 进度条模拟仪表盘的想法,毕竟直接使用还是香的啊
  先看下官方示例的效果:
在这里插入图片描述
  使用了echarts的仪表盘以后,一切似乎向着预期的方向在发展,但是突然发现一个问题,相比其他echarts图表可以通过设置 gird 属性来设置图表组件的容器位置,例如与left、top等的偏移量。但是仪表盘并不支持此属性(设置后无效),看着仪表盘比其他的echarts图表高了一头,就像 ‘土猪进了羊圈’,一点都不和谐,毕竟一家人就要整整齐齐啊!

解决方法

  查阅官方文档,并没有找到设置仪表盘位置的方法,倒是找到了设置title 标题等的方法,但显然不是需要的,通过观察,以及文档阅读的推断,发现仪表盘是从给定容器的中心点作为圆心来绘制的,可以通过radius 来指定仪表盘的大小。
 既然是以容器的中心点为圆心,那么是否可以改变该圆心的位置呢?以这个为方向,最后找到了解决的方法,可以在series 设置 center 来指定圆心的位置,此属性的值为一个数组,内部元素为字符串,可以取相对容器大小的百分比,也可以使用固定的值。
以官方示例为例:
在这里插入图片描述
添加center 属性后:
在这里插入图片描述

示例代码

tips:此代码为官方示例的代码,只是在代码中增加了center属性~~~

option = {
    tooltip: {
        formatter: '{a} <br/>{b} : {c}%'
    },
    toolbox: {
        feature: {
            restore: {},
            saveAsImage: {}
        }
    },
    series: [
        {
            name: '业务指标',
            type: 'gauge',
            radius: '70%',
            center:['10%','20%'],
            detail: {formatter: '{value}%'},
            data: [{value: 66, name: '完成率'}]
        }
    ]
};

setInterval(function () {
    option.series[0].data[0].value = (Math.random() * 100).toFixed(2) - 0;
    myChart.setOption(option, true);
},2000);

  至此使用echarts仪表盘是设置仪表盘的位置就实现了,由于时间关系不确定是否还存在其他的方式来解决此问题。如有更好的方法,欢迎评论告知!
(tips:期初由于各种属性设置均不能实现效果,故想通过页面布局的调整来实现,大致思路为在目标容器中添加一个div最为仪表盘的实际渲染容器,然后如果定位的方式将仪表盘的图移动到视觉上比较舒服的位置,但此时可能存在一个问题,随着页面的缩放,容器大小改变后仪表盘是否会跟随容器改变大小,执行resize()。好了,本篇结束,如果对此方法有兴趣的同学,欢迎告知可行性呢~~~)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐