echarts实现K线图问题纪要

1,699 阅读2分钟

第一次在项目中使用echarts画k线图,在此做个小小的记录。 实现效果如下:

xxx.gif

  • 问题1 双y轴共用一条x轴

修改前:

微信图片_20210518160423.png 修改后:

32.png

代码如下:

yAxis: [
        {
            type: 'value',
            name: '奈雪的茶',
            position: 'left',
            offset: 80,
            axisLine: {
                show: true,
                lineStyle: {
                    color: '#8392A5'
                }
            },
            axisLabel: {
                formatter: '{value}'
            }
        },
        {
            type: 'value',
            name: '喜茶',
            min: 4000,
            max: 6000,
            splitNumber: 6,
            interval: (6000 - 0) / 6,
            position: 'right',
            axisLine: {
                show: true,
                lineStyle: {
                    color: '#8392A5'
                }
            },
            axisLabel: {
                formatter: '{value}'
            }
        }
    ]

其实需要加:

    min: 4000,
    max: 6000,
    splitNumber: 6,
    interval: (6000 - 0) / 6,
  • 问题2 指定点中显示注释

修改前:

微信图片_20210518162657.png 修改后:

32.png 为了不让他显示点的图形标记,我将标记换为一个底色透明的图片(满足客户的各种需求) 如下:

    markPoint: {
                label: {
                    normal: {
                        formatter: function (param) {
                            return param != null ? param.name : '';
                        }
                    }
                },
                data: [
                    {
                        name: '意外释放超乐观信号',
                        coord: ['2015-06-04', 15],
                        value: 2600,
                        symbol:'image://http://112.126.102.27:8086/zlqhabi/vfs/zlqh/opacity.png',
                        itemStyle: {
                            color: 'rgb(41,60,85)'
                        }
                    }
                ],
                tooltip: {
                    formatter: function (param) {
                        return param.name + '<br>' + (param.data.coord || '');
                    }
                }
            }
  • 问题3 将tooltip修改为中文

修改前:

tishi_old.png 修改后:

tishi.png

代码如下:

    tooltip: {
        formatter: function (param) {
            var param1 = param[0];
            var param2 = param[1];
            var param1Str = param.length > 0 ? `${param1.seriesName}:<br/>
            开票价:${param1.data[1]} <br/>
            收盘价${param1.data[2]} <br/>
            最高价${param1.data[4]} <br/>
            最低价${param1.data[3]} <br/>
            ` : ''
            var param2Str = param.length > 1 ? `${param2.seriesName}:<br/>
            开票价:${param2.data[1]} <br/>
            收盘价${param2.data[2]} <br/>
            最高价${param2.data[4]} <br/>
            最低价${param2.data[3]} <br/>
            ` : ''
            return [
              '日期: ' + param1.name + '<hr size=1 style="margin: 3px 0">',   
               param1Str + param2Str
            ].join('');
        }
    }
  • 问题4

实现brush

brush 是区域选择组件,用户可以选择图中一部分数据,从而便于向用户展示被选中数据,或者他们的一些统计计算结果。

客户的需求是标出来一些点,最好能圈出来,就想到这个功能 代码如下: option中添加brush属性,只能实现手动框选区域数据

    brush: {
        xAxisIndex: 'all',
        brushLink: 'all',
        outOfBrush: {
            colorAlpha: 0.1
        }
    }

我想默认选中区域数据,如下

    setTimeout(function() {
        myChart.dispatchAction({
            type: 'brush',
            areas: [
                {
                    brushType: 'lineX',
                    coordRange: ['2015-01-14', '2015-08-07'],
                    xAxisIndex: 0
                }
            ]
        })
    })

由于执行顺序的原因,直接写myChart.dispatchAction不生效,这个问题困扰了我好久,后来在官方给的例子上试,拿出$.get他就不生效了,后来我把它放在setTimeout就好了

18.png

感谢

谢谢你读完本篇文章,希望对你能有所帮助,如有问题欢迎各位指正。