zoukankan      html  css  js  c++  java
  • echarts 之 立体柱状图

    本文地址:https://www.cnblogs.com/veinyin/p/14744293.html

    项目需求,实现立体柱状图,基于 echarts 实现,如下图

     

    思路:普通柱状图(bar) + 象形柱图(pictorialBar),参考 demo

    需求中柱状图是分组的,因此还是给一下具体配置项如下,只是稍微修改了一点内容,几个重要的地方加了注释,可直接贴在 echarts 实例中看效果

     option = {
        tooltip: {
            trigger: 'axis',
            confine: true,
            axisPointer: { type: 'none' },
            textStyle: { fontSize: 12, fontWeight: 500 },
            formatter(params) {
                // 只展示柱子对应的内容,把顶部底部的 tooltip 过滤掉
                return params.reduce((pre, i) => {
                    if (i.componentSubType === 'bar') {
                        i.marker = i.marker.replace(/[object Object]/, i.color.colorStops[1].color);
                        i.value = `<span style="flex: 1; text-align: right; margin-left: 16px;">${i.value}</span>`;
                        const current = `<div style="display: flex; align-items: center; height: 26px;">${i.marker}${i.seriesName} ${i.value}</div>`;
                        return `${pre}${current}`;
                    }
                    return pre;
                }, '');
            },
        },
        legend: {
            data: ['武汉', '北京', '上海'],
            right: 10,
            top: 12,
            type: 'scroll',
            icon: 'circle',
            itemWidth: 10,
            itemHeight: 10,
            itemGap: 16,
    // 因为柱子顶部和底部是通过 offset 跟柱子结合起来的,如果取消选中,柱子数量变化,又要重新计算 offset,为了简单点就直接禁掉了 selectedMode: false, }, grid: { left: '3%', right: '4%', bottom: '5%', containLabel: true }, xAxis: { type: 'category', data: ['2020', '2021'], axisLine: { lineStyle: { color: '#F2F4F7' } }, axisTick: { show: false }, axisLabel: { color: '#585D63' }, }, yAxis: { boundaryGap: [0, 0.01], axisLine: { lineStyle: { color: '#F2F4F7' } }, axisTick: { show: false }, axisLabel: { color: '#585D63' }, splitLine: { lineStyle: { color: '#F2F4F7' } }, }, series: [ { name: '武汉', type: 'bar', barWidth: 24, barCategoryGap: 12, data: ['11.8651', '4.9385'], itemStyle: {
              // 柱体渐变色 color:
    new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#E1A4FF', }, { offset: 1, color: '#C65FF9', }, ]) }, }, { name: '武汉', type: 'pictorialBar', symbolSize: [24, 6],
    // 这个属性很重要,直接决定了顶部跟柱子是否契合 symbolOffset: [-31, -3],
    z:
    12, itemStyle: { color: '#C65FF9' }, symbolPosition: 'end',
    // 要给成武汉这两个柱子的值,这是圆柱顶部,值不给对高度会对不上 data: ['11.8651', '4.9385'], }, { name: '武汉', type: 'pictorialBar', symbolSize: [24, 6], symbolOffset: [-31, 3], z: 12, itemStyle: { color: '#C65FF9' }, symbolPosition: 'start',

           // 这个给成大于 0 的值就行,设置了 position,一定会在柱子底部展示 data: [
    1, 1], }, { name: '北京', type: 'bar', barWidth: 24, barCategoryGap: 12, data: ['3.7493', '1.5536'], itemStyle: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#FFAC97', }, { offset: 1, color: '#FF704C', }, ]) }, }, { name: '北京', type: 'pictorialBar', symbolSize: [24, 6], symbolOffset: [0, -3], z: 12, itemStyle: { color: '#FF704C' }, symbolPosition: 'end', data: ['3.7493', '1.5536'], }, { name: '北京', type: 'pictorialBar', symbolSize: [24, 6], symbolOffset: [0, 3], z: 12, itemStyle: { color: '#FF704C' }, symbolPosition: 'start', data: ['3.7493', '1.5536'], }, { name: '上海', type: 'bar', barWidth: 24, barCategoryGap: 12, data: ['56.1131', '23.6478'], itemStyle: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#71A8FE', }, { offset: 1, color: '#2872FC', }, ]) }, }, { name: '上海', type: 'pictorialBar', symbolSize: [24, 6], symbolOffset: [31, -3], z: 12, itemStyle: { color: '#2872FC' }, symbolPosition: 'end', data: ['56.1131', '23.6478'], }, { name: '上海', type: 'pictorialBar', symbolSize: [24, 6], symbolOffset: [31, 3], z: 12, itemStyle: { color: '#2872FC' }, symbolPosition: 'start', data: ['56.1131', '23.6478'], }, ], // legend 对应的 color,实际上柱状图的颜色都是在 itemStyle 里定义的 color: ['#C65FF9', '#FF704C', '#2872FC'], }
    感谢您的阅读及指正,让我们一起进步。
    欢迎联系我交流:veinyin@gmail.com
    作者:VeinYin
    博客地址:https://www.cnblogs.com/veinyin/
    如需转载请注明出处。
  • 相关阅读:
    记CentOS-7-x86_64-DVD-1503与Windows7单硬盘双系统的安装
    NetCFSvcUtil.exe and Windows 7
    qq 通信原理(转)
    Qt通过odbc读取excel数据
    Qt中gb2312/GBK的URL编解码函数
    Qt将表格table保存为excel(odbc方式)
    Qt根据类名创建对象(元对象反射)
    亲试,Windows平台上使用Qt5.2.1编写Android
    使用正则表达式限制swing (JTextField等) 的输入
    Winform的"透明"
  • 原文地址:https://www.cnblogs.com/veinyin/p/14744293.html
Copyright © 2011-2022 走看看