echarts如何实现带百分比的横向柱状图

目录
  • 实例代码
  • 效果图
  • 代码解析
  • 总结

实例代码

var data = [220, 182, 191, 234, 290, 120, 65, 444];
var barWidth = 20;
var maxNum = 0;
for (var i = 0; i < data.length; i++) {
    if (data[i] > maxNum) {
        maxNum = data[i];
    }
}

option = {
    backgroundColor: 'black',
    grid: {
        top: '10%',
        left: '20%',
        right: '10%',
        bottom: '0%',
    },

    title: {
        text: '百分比柱子',
    },
    xAxis: {
        show: false,
    },
    yAxis: {
        data: data.map((item, index) => `data ${index}`),
        splitLine: {
            show: false,
        },
        axisLabel: {
            textStyle: { fontSize: '80%', color: '#02afff' },
        },
        axisLine: {
            show: false,
        },
        axisTick: false,
    },
    series: [
        {
            type: 'bar',
            barWidth: barWidth,
            zlevel: 2,
            data: data.map(function (item) {
                return {
                    value: item,
                    maxNum: maxNum,
                };
            }),
            label: {
                show: true,
                position: 'inside',
                // distance: 80,
                align: 'center',
                formatter: function (params) {
                    // return params.data.realValue;
                    var percent = Number((params.data.value / params.data.maxNum) * 100).toFixed(2) + '%';
                    return percent;
                },
                color: '#fff',
                fontSize: 12,
            },
            itemStyle: {
                borderRadius: 10,
                color: new echarts.graphic.LinearGradient(0, 1, 1, 1, [
                    { offset: 0, color: '#395CFE' },
                    { offset: 1, color: '#2EC7CF' },
                ]),
            },
        },
        {
            type: 'bar',
            barWidth: barWidth,
            barGap: '-100%',
            data: data.map(function (item) {
                return {
                    realValue: item,
                    value: maxNum,
                };
            }),
            label: {
                show: true,
                position: 'right',
                distance: 80,
                align: 'right',
                formatter: function (params) {
                    return params.data.realValue + ' 件';
                },
                color: '#02afff',
                fontSize: 18,
            },
            itemStyle: {
                borderRadius: 10,
                color: 'rgba(3,169,244, 0.5)',
            },
        },
    ],
};

效果图

代码解析

1、在option之前,定义一个data数组,然后通过for循环获取数组中的最大值,保存为maxNum变量。

2、在series里定义两个bar,第一个bar的data通过map,设置value为步骤1里面的data,并且返回一个对象类型,对象包含了value和maxNum两个属性(value是必选属性,maxNum是一个自定义属性,如果有必要,还可以加其他自定义属性),之所以要加上maxNum这个属性,因为后面label的formatter需要使用value/maxNum来计算百分比,第一次遇到series里data返回为一个对象类型的写法,涨姿势了,对于获取数据进行计算真是太有用了。

3、series里第二个bar,也是通过map给data赋值,不同的是这个bar的value全部都设置为maxNum,第二个bar作为背景,相当于是100%进度。之所以还需要加一个realValue属性,因为在bar的右边还需要显示每一项的数值(220, 182, 191, 234, 290, 120, 65, 444这些)。

4、第一个bar在上面,第二个bar在下边,关键之处在于第一个bar的zlevel:2,然后第二个bar的barGap: '-100%'.

多看echarts官网的案例,真的受益匪浅。

总结

到此这篇关于echarts如何实现带百分比的横向柱状图的文章就介绍到这了,更多相关echarts百分比横向柱状图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Echarts基本入门之柱状图、折线图通用配置

    1echarts的基本步骤 四步 1 找dom容器 2 初始化Init 3 配置options 4 setOptions 几乎124的步骤是一样的,options是配置项,想呈现什么图标就配什么. 最基本的带最大值最小值的柱状图 2 平均值 markLine属性 3 数值显示 柱宽度, 横向柱状图 数值显示 label属性 柱宽度 barWidth 横向的话只需要注意两个轴的转变就行 通用配置 即饼图散点图通用的配置 title 标题 tooltip: 提示 toolbox 工具按钮 legen

  • Echarts Bar横向柱状图实例代码

    目录 横向柱状图 动态更新数据和样式 解决 echarts 宽高自适应问题 纵向柱状图 纵向柱状图实现 坐标指示器背景渐变色 柱体设置不同颜色 柱状图上方显示数值 tooltip 提示框自定义 总体实现 总结 接上一篇# Echart Bar柱状图样式详解续写,可以先看看上一篇,不看的话,影响也不是特别大. 横向柱状图 动态更新数据和样式 实现数据按月统计和按日统计的动态切换.按月统计时,每个月数据都会展示,x 轴显示 12 个标签:按日统计时,x 轴不完全显示所有标签,间隔显示,而且柱状体的宽

  • echarts如何实现带百分比的横向柱状图

    目录 实例代码 效果图 代码解析 总结 实例代码 var data = [220, 182, 191, 234, 290, 120, 65, 444]; var barWidth = 20; var maxNum = 0; for (var i = 0; i < data.length; i++) { if (data[i] > maxNum) { maxNum = data[i]; } } option = { backgroundColor: 'black', grid: { top: '

  • vue echarts实现横向柱状图

    本文实例为大家分享了vue echarts实现横向柱状图的具体代码,供大家参考,具体内容如下 实现效果: 代码: <template> <div class="OverYearsPompany"> <div id="OverYearsPompanyChart" style="flex: 1; height: 368px; margin-top: -42px"></div> </div>

  • React+CSS 实现绘制横向柱状图

    前言: 页面一共分为两个结构 文字 + 渐变柱形图为一个部分,下面的标注为一个结构. 我们先看文字 + 渐变柱形图部分. 总体使用 flex 布局,左边文字部分占总体的 50%,右边的占剩余的空间部分.右侧渐变柱形部分的宽度是动态变化的.宽度是根据传入的 value,进行计算的. <section className="graphs" style={style}> <div className="chart-1"> {listData.map

  • Python实现带百分比的进度条

    大家在安装程序或下载文件时,通常都能看到进度条,提示你当前任务的进度.其实,在python中实现这个功能很简单,下面是具体代码.在实际应用中,你完全可以根据自己的要求进行修改!比如,示例中是通过time.sleep()方法进行时间延迟,你完全可以根据实际的程序运行耗时进行控制:同样,在进度百分比处,你也可以显示实际的进度比,而不是例子中机械的自增百分比. import sys import time def view_bar(num, total): rate = num / total rat

  • 使用Ajax实现简单的带百分比进度条实例

    需求:当进行文件长传保存等操作时,能在页面显示一个带百分比的进度条,给用户一个好的交互体验 实现步骤 JSP页面 1.添加table标签 <table id="load" width="700" border="0" align="center" bgcolor="#FAFAFA" cellpadding="0" cellspacing="0" borderco

  • C#实现带百分比的进度条功能示例

    本文实例讲述了C#实现带百分比的进度条功能.分享给大家供大家参考,具体如下: 功能需求: 如果程序中会执行一个耗时的计算过程,我想在用户点击按钮后,弹出一个进度条窗口,显示正在执行的进度(最好能带有百分比),执行完成后,进度条窗口关闭,回到主程序窗口. 在关闭子窗口之前父窗体不能点击操作. 实现方法: 先设计Form2进度条窗体,在Form2中央上放ProgressBar控件progressBar1和Label控件label1,代码: public partial class Form2 : F

  • JavaScript根据数据生成百分比图和柱状图的实例代码

    复制代码 代码如下: <HTML> <head> <title>JS百分比图和柱状图</title>   <xml:namespace prefix="v"/>   <style>    v\:* {behavior=url(#default#VML)}   </style>   <style>   a:hover {color:maroon}   h2 {color:#006600;  

  • Android开发ListView中下拉刷新上拉加载及带列的横向滚动实现方法

    ListView 控件可使用四种不同视图显示项目.通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本. 可使用 ListView 控件将称作 ListItem 对象的列表条目组织成下列四种不同的视图之一:1.大(标准)图标2.小图标3.列表4.报表 View 属性决定在列表中控件使用何种视图显示项目. 还可用 LabelWrap 属性控制列表中与项目关联的标签是否可换行显示.另外,还可管理列表中项目的排序方法和选定项目的外观. 相信有很人做的项目估计都用的到这个.就是List

  • Python+pyplot绘制带文本标注的柱状图方法

    如下所示: import numpy as np import matplotlib.pyplot as plt # 生成测试数据 x = np.linspace(0, 10, 10) y = 11-x # 绘制柱状图 plt.bar(x, y) # 循环,为每个柱形添加文本标注 # 居中对齐 for xx, yy in zip(x,y): plt.text(xx, yy+0.1, str(yy), ha='center') # 显示图形 plt.show() 运行效果: 以上这篇Python+

随机推荐