Echart基本配置项之bar、line、pie

977 阅读5分钟

Echart v5.3.2

var options = {
    // 一、标题组件,包含主标题和副标题
    title: {
        ...
        ...
    },
    // 二、 图例组件
    legend: {
        ...
        ...
    },
    // 三、直角坐标系内网格布局。折线图,柱状图,散点图(气泡图)
    grid: {
        ...
        ...
    },
    // 四、提示框组件
    tooltip: {
        ...
        ...
    },
    // 五、直角坐标系grid的x轴
    xAxis: {
        ...
        ...
    },
    // 六、series
    series: [
        {
            ...
        },
        {
            ...
        }
    ]
    
}

一、标题组件,包含主标题和副标题

    title: {
        text: '主标题',
        textStyle: { ... },
        subtext: '副标题',
        subtextStyle: { ... },
        top: '',
        left: '',
        backgroundColor: '',
        ...
    }, 

图1.1 image.png

图1.2

image.png

二、图例组件

    legend: {
        type: 'plain', // plain普通图例 scroll可滚动图例,多用于饼图
        // 图例的数据数组。需与series的name对应匹配
        data: [
            // 默认取series中的name,无特别设置样式,可不声明
            'series1的name',
            // 可为该项配置对象,单独设置样式{name: '', icon: '', textStyle: { ... }}
            {
                name: 'series2的name',
                icon: '',
                textStyle: {
                    color: ''
                }
            }
        ],
        selectedMode: true, // string|boolean,默认true。图例选择模式,控制是否可以通过点击图例改变系列的显示状态,还有可选值single|multiple模式
         // 图例选中状态。初始化显示需要显示的图表,eg:初始化加载显示[series1的name]的bar图表,而[series2的name]的line图表不显示,在selectedMode为true时可通过点击显示图例显示 。
        selected:{
            'series1的name': true,
            'series2的name': false
        },
        itemGap: 2, // 图例间隔
        itemWidth: 25, // 图例宽度
        itemHeight: 25, // 图例高度
        itemStyle: { ... }, // 图例样式
        lineStyle: { ... }, // 图例图形中线的样式,诸如折线图的图例-o-
        // 图例的公用文本样式。eg:设置饼图
        textStyle: {
            // 自定义富文本样式(给标签增加样式)
            rich: {
                aStyle: {
                    color: '#f00'
                },
                bStyle: {
                    height:42
                },
                cStyle: {
                    fontSzie:18,
                    fontWeight: 600
                },
                ...
            }
        }
         // 图例文本。字符串模板和回调函数。只有变量name,如果需要其他数据,使用图表实例, this.instanceChart.getOption().series[0].data获取对应的数据
        formatter: function(name) {
            let items = that.instanceChart.getOption().series[0].data.filter(item => item.name == name)
            let ratio = items?.[0]?.ratio || '0.00%'
            let quantity = items?.[0]?.value || '0'
            return `{aStyle|${name}}{bStyle|${ratio}}${cStyle|quantity}`
        },
        ...
    },

图2.1 image.png 图2.2 image.png

三、直角坐标系内网格布局。折线图,柱状图,散点图(气泡图)

    grid: {
        top: 40,
        left: 10,
        right: 5,
        bottom: 0,
        containLabel: true, // 『防止标签溢出』。设置为true显示X轴和Y轴的标签
        show: true,
        backgroundColor: 'transparent', // 网格背景色,默认透明。设置show:true生效
        borderColor: '#ccc', // 网格边框颜色。设置show:true生效
        borderWidth: 1, // 网格边框线框。设置show:true生效
        shadowBlur: 10, // 图形阴影的模糊大小。设置show:true生效
        shadowColor: 'rgba(0, 0, 0, 0.5)', // 阴影颜色。设置show:true生效
        shadowOffsetX: 1, // number 阴影水平方向上的偏移距离。设置show:true生效
        shadowOffsetY: 1, // number 阴影垂直方向上的偏移距离。设置show:true生效
        ...
    },

图3.1 image.png

四、提示框组件

    tooltip: {
        trigger: 'axis', // axis坐标轴触发(柱状图和折线图);item数据项图形触发(散点图和饼图;none什么都不触发)
        backgroundColor: '#ccc', // 悬浮框的背景颜色
        // 设置悬浮框内的文字大小样式等
        textStyle: {
            color: '#fff',
            fontSize: 14,
            ...
        },
        // 坐标轴指示器配置项
        axisPointer: {
            type: 'line', // 坐标轴指示器,默认为直线。可选为:line | shadow | none | cross
            // 坐标轴指示器的文本标签
        label: {
            show: false, // 默认false,当type为cross时默认true
            precision:'auto', // number或string,文本标签的小数点精度
            color: '#f00',
            ...
        },
        lineStyle: { ... },
        shadowStyle: { ... }, 
        crossStyle: { ... }
      },
        // 提示框浮层内容格式器。方式一:字符串模板
        formatter: '{a}-{b}-{c}', // 折线|柱状|K线: {a}系列名称:series的name,{b}类目值:x轴的值,{c}数值:y轴的值。{a0}-{b0}-{c0}加索引的表示系列索引,0表示series中第一个data数据值,1表示第二个data数据值,依次类推...
        // 提示框浮层内容格式器。方式二:回调函数
        formatter: function formatter(params) {
          // params[0].data中的data是series中的data
          const { date, value } = params[0].data
          return `<div>${date}<br />销售金额:${value} </div>`
        }
    }

图4.1 image.png 图4.2 image.png

五、直角坐标系grid的x轴(y轴属性基本相同)

    xAxis: {
        show: true, // 是否显示x轴。默认true
        type: 'category', // x轴类型。category类目轴--自定义的类目数据,多用于x轴文字展示 | value数据轴--连续数据,多用于y轴数据展示 | time时间轴 | log对称轴
        name: '日期', // x轴的坐标轴名称,标识单位等
        nameLocation: 'end', // start | middle | end,x轴名称显示位置
        // 设置x轴的坐标轴名称颜色大小等样式
        nameTextStyle: {
            color: '',
            fontSize: 12,
            width: 50, // 文本宽
            height: 35, // 文本高
            ...
        }
        nameGap: 15, // x轴名称与轴线之间的间距
        nameRotate: 45, // x轴名字旋转的角度
        // x轴轴线
        axisLine: {
            show: true, // 默认true显示
            // 轴线类型样式等设置
            lineStyle: {
                type: '', // 线的类型,solid | dashed | dotted, v5.0.0开始,可以number或number数组,配合dashOffset指定线条的虚线效果
                color: '',
                width: 2,
                ...
            }
        },
        // x轴刻度线
        axisTick: {
            showtrue, // 默认true显示
            alignWithLabel: true, // 类目轴boundary为true时,保证刻度线与标签居中对齐
            interval: 0, // number | function,坐标轴刻度线显示间隔。0强制显示所有标签
            inside: false, // boolean,x轴刻度线是否朝内,默认朝外false。(利用这个属性可以实现x轴线的效果,见图二)
            length: 5, // x轴刻度线的长度
            // 刻度线类型样式等设置
            lineStlye: {
                type: '', // 线的类型,solid | dashed | dotted, v5.0.0开始,可以number或number数组,配合dashOffset指定线条的虚线效果
                color: '',
                ...
            }
        },
        // x轴刻度标签文字
        axisLabel: {
            show: true, // 是否显示刻度标签,默认true
            interval: 0, // number | function,坐标轴标签文字显示间隔。0强制显示所有标签
            inside: false, // boolean,x轴标签文字是否朝内,默认朝外false
            rotate: 15, // number,// x轴标签文字旋转角度
            margin: 10, // x轴标签文字与x轴轴线之间的距离
            hideOverlap: true, // v5.2.0支持 boolean,是否隐藏重叠的标签,默认false
            formatter: '', // string | function,x轴标签文字格式器,支持字符串和回调函数两种形式。(1)字符串模板:适用不改变原value值,直接追加内容. eg: formatter: '{value} kg';(2)函数模板:适用于改造原value值. eg:formatter: function(value, index) { return Math.trunc(value) + 'key' }
            color: '#f00', // color | function, x轴标签文字颜色,默认取axisLine.lineStyle.color. 支持回调函数,参数是标签的文本,返回颜色值,eg:(value, index) => { return value == '苹果' ? '#f00' : 'black' }
            fontSize: '',
            width: '',
            textBorderColor: '',
            textShadowColor: '',
            overflow: 'none', // 文字超出宽度截断或换行,配置width有效。 truncate | break | breakAll
            rich: {}, // Object,自定义富文本样式
            ...
        },
        // x轴指示器(鼠标进入悬浮显示)
        axisPointer: {
            show: false, // 默认不显示
            type: 'line', // line | shadow | none
            label: {
                show: false, // 默认不显示
                precision: 2, // number |string, 文本标签的小数点精度
                formatter: '', // string | function
            },
            // type为line生效
            lineStyle: {
                type: 'line',
                color: '',
                ...
            },
            shadowStyle: {
                color: '',
                ...
            }
        }
        data: Array, // x轴数据。type: 'category'时data才有效。若需要以对象的形式传入多个数据,x轴展示的数据的key必须是【value】。(若传入的是字符串,会被切分成数组依次展示)   
        ...
    }

图5.1 image.png 图5.2 image.png

六、series

    // 数组形式,一个对象表示一个图表。eg:
    // 两个柱状图 series:[{type: 'bar', data: seriesData},{type: 'bar',data: seriesData}];
    // 柱状图+折线图 series:[{type: 'line', data: seriesData},{type: 'bar',data: seriesData}]
    series: [
        {
            type: 'line', // 图表类型。line折线图、bar柱状图、pie饼图、map地图
            // 悬浮在数据项上的文字标签(eg:柱状图的柱子上方漂浮显示/柱子中间显示)。见图6.1
            label: {
                show: true, // boolean
                position: 'top', // string | Array。top/left/bottom/inside/insideLeft/insideBottomLeft等。[10, '10%']像素或百分比
                distance:5, // number 距离图形元素的距离
                formatter: '', // 字符串模板和回调函数
                fontSize: 12, // 字体大小
                ...
            },
            select: {}, // 数据选中后状态
            selectedMode: false, // boolean选中状态,默认false | string选中模式single,multiple,series
            itemStlye: {},
            lineStyle: {},
            // 区域填充颜色,line有此属性。见图6.2
            areaStyle: {
                // 区域颜色,支持十六进制,rgba,渐变色。0, 0, 0, 1代表右|下|左|上
                color: echarts.graphic.LinearGradient(0, 0, 0, 1, [
                    {
                      // 开始位置
                      offset: 0,
                      color: '#B7DBFF'
                    },
                    {
                      // 结束位置
                      offset: 1,
                      color: '#fff'
                    }
                  ])
            },
            // 鼠标悬停区域的高亮状态
            emphasis: {
                disabled: false, // boolean 是否关闭高亮状态
                label: {
                    show: true,
                    position: '',
                    color: ''
                    ...
                }
            },
            // 系列中数据内容数组。具体数据项
            // 第一种:只有数据值。eg:[12, 45, 674, 88, 90]
            // 第二种:不止数据值,还需要其他数据的数组对象形式(需要更多的数据去自定义tooltip等),数据项数值必须是value这个字段(其中pie中的series的data格式必须满足[{name: '', value: ''}])。eg:[{date: '2020-09', value: 12}, {date: '2021-08', value: 45}, ...]
            data: [
                {
                    type: 'bar',
                    // 为该系列单独设置样式
                    label: { ... },
                    labelLine: { ... },
                    itemStyle: { ... },
                    emphasis: { ... }
                    ...
                }, {
                    type: 'pie'
                }
            ]
        }
    ]

图6.1

image.png 图6.2

image.png