echarts如何做出多条进度条的效果_助农电商平台用弹性盒子做echarts

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

            <span class="region font18" path="region" data-control="Label"/>
            <div class="bg-bar"><span></span><span></span></div>
            <div class="num-box">
                <span path="policeNum" class="policeNum"  data-control="Label"/>
                |
                <span class="criminalNum" path="criminalNum" data-control="Label"/>
            </div>
        </div>
    </div>

    <!-- ** 柱状图 ** -->
    <div class="bar-graph">
        <div id="regionDistributionBar"></div>
    </div>
</div>
```

因为是用组件绑定的json数据,列表处需要自行处理

2、js部分

// 全局变量
this._regions = [];
this._policeNums = [];
this._criminalNums = [];

/* -- 列表 -- */
this._regionDistribution = this._component.getElementById("regionDistribution");
this._regionDistribution.queryAndDisplay({}, function (param) {
    // 封装echarts数据
    $.each(param._data, function (index, ele) {
        that._regions.push(ele.region)
        that._policeNums.push(ele.policeNum);
        that._criminalNums.push(ele.criminalNum);
    })

    that.loadBarData("regionDistributionBar", 1);

    that.pagePlay(that._regionDistribution, param._count, 8, 5000); // 5秒翻页
});


/**
 * 加载柱状图
 * */
RegionDistribution.prototype.loadBarData = function (id, currentPage) {
    // 截取所有数据,数组起始位置和终止位置
    var end = this._regions.length, start = (currentPage - 1) * 8; 
    if (currentPage * 8 < this._regions.length) {
        end = currentPage * 8;
    }

    // 获取当前页展示数据
    var region = this._regions.slice(start, end),
        policeNum = this._policeNums.slice(start, end),
        criminalNum = this._criminalNums.slice(start, end);

    // 若末尾页不足8条,则填充0,防止样式错乱
    var len = region.length;
    for (var i = 0; i < 8 - len; i++) {
        region.unshift(0);
        policeNum.unshift(0);
        criminalNum.unshift(0);
    }
    
    // 初始化echarts元素大小
    var objHtml = document.getElementById(id);
    objHtml.style.width = objHtml.parentElement.offsetWidth + "px";
    objHtml.style.height = objHtml.parentElement.offsetHeight + "px";

    // echarts数据绑定开始
    var totalScoreCount = echarts.init(objHtml);
    var option = {
        color: ["#f5a623", "#fff"],
        grid: [{//外框
            top: '6%',
            left: '0',
            right: '0',
            bottom: '3%',
            containLabel: false,
        }],
        calculable: true,
        tooltip: {
            trigger: 'axis'
        },
        xAxis: [{
            type: 'value',
            splitLine: {show: false},
            axisLabel: {show: false},
            axisTick: {show: false},//不显示刻度
            axisLine: {show: false},
            boundaryGap: false,//坐标轴两边留白策略
        }],
        yAxis: [{
            type: 'category',
            boundaryGap: false,
            position: 'top',
            data: region,
            splitLine: {show: false},
            axisLabel: {show: false},
            axisTick: {show: false},//不显示刻度
            axisLine: {show: false},
        }],
        series: [
            {
                type: 'bar',
                data: policeNum,
                barWidth: 2,
            },
            {
                type: 'bar',
                data: criminalNum,
                barWidth: 2,
                barGap: '5px'
            }
        ]
    };
    totalScoreCount.setOption(option);//图表填充加载
}

/**
 * 定时翻页 5秒一次
 * @param obj 组件对象
 * @param count 总条目(param._count)
 * @param screenNum 屏幕显示个数
 * @author 刘欣
 */
RegionDistribution.prototype.pagePlay = function (obj, count, screenNum, intervalTime) {
    var that = this;
    clearInterval(obj.timer);
    if (count > screenNum) {
        var pageCount = count; // 总页数


![img](https://img-blog.csdnimg.cn/img_convert/980f282075c8534c25f3e4177778309c.png)
![img](https://img-blog.csdnimg.cn/img_convert/d28ff563bddc6e1ababed27b95e1b72a.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于echarts横向进度条一条多段的需求,可以通过使用echarts的自定义系列(custom series)来实现。下面是一个简单的示例代码: ```javascript // 初始化echarts实例 var myChart = echarts.init(document.getElementById('chart')); // 定义数据 var data = [ { name: '任务1', value: [30, 70] }, { name: '任务2', value: [40, 60] }, { name: '任务3', value: [50, 50] }, // ... ]; // 配置选项 var option = { tooltip: {}, xAxis: { type: 'value', max: 100, show: false }, yAxis: { type: 'category', data: data.map(item => item.name), axisTick: { show: false }, axisLine: { show: false }, axisLabel: { show: false } }, series: [{ type: 'custom', renderItem: function(params, api) { var yValue = api.value(2); var start = api.coord([api.value(0), yValue]); var end = api.coord([api.value(1), yValue]); var height = api.size([0, 1])[1] * 0.6; return { type: 'rect', shape: { x: start[0], y: start[1] - height / 2, width: end[0] - start[0], height: height }, style: api.style() }; }, dimensions: ['start', 'end', 'name'], data: data, z: 10 }] }; // 使用配置项显示图表 myChart.setOption(option); ``` 上述代码中,我们使用了echarts的custom series来自定义渲染进度条的形状。通过指定每个任务的起始值和结束值,以及任务名称,我们可以动态生成多段进度条。 您可以根据自己的需求修改数据和样式来实现更复杂的效果。希望对您有帮助!如果还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值