echarts的折线图 是怎么实现的淘宝的这个效果

请问一下这种折线图怎么实现

每条线的数据差异很大 一条是十几万 一条是十位数 但是他们不会根据y轴的值比例来决定显示的位置 还有如果切换 legend 的时候 线条位置是不会变的

image.png

同样的数据 我写出来的就是 80多万的在最上面 因为最大 最小的几乎就平行x轴了 请问怎么向图1一样

image.png

阅读 2.1k
2 个回答

我大概明白了,这样的话配多个 y 轴,每个条折线单独配一个 y 轴就行。通过配置 series 里面的 yAxisIndex 字段可以把折现和 y 轴对应起来。

下面是一个实例数据,你可以粘贴在官方 demo 里试试。

option = {
    tooltip: {
        trigger: 'axis',
        axisPointer: {
            type: 'cross',
            crossStyle: {
                color: '#999'
            }
        }
    },
    toolbox: {
        feature: {
            dataView: {show: true, readOnly: false},
            magicType: {show: true, type: ['line', 'bar']},
            restore: {show: true},
            saveAsImage: {show: true}
        }
    },
    legend: {
        data: ['蒸发量', '降水量', '平均温度']
    },
    xAxis: [
        {
            type: 'category',
            data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月'],
            axisPointer: {
                type: 'shadow'
            }
        }
    ],
    yAxis: [
        {
            type: 'value',
            show: false
        },
        {
            type: 'value',
            show: false
        },
         {
            type: 'value',
            show: false
        }
    ],
    series: [
        {
            name: '蒸发量',
            type: 'line',
            yAxisIndex: 0,
            smooth: true,
            data: [1, 2, 4, 6, 7, 8, 9, 12]
        },
        {
            name: '降水量',
            type: 'line',
            yAxisIndex: 1,
            smooth: true,
            data: [6, 10, 30, 40, 50, 70, 80, 90]
        },
        {
            name: '平均温度',
            type: 'line',
            yAxisIndex: 2,
            smooth: true,
            data:[90, 250, 380, 500, 800, 630, 700, 800]
        }
    ]
};
推荐问题