echarts教程(六):折线图的最高点,最低点,平均值的标注

本文详细介绍了如何在ECharts中使用markPoint和markLine功能来设置折线图的最高值、最低值标记,并添加平均线。通过实例代码展示了如何配置markPoint数据以标注最大值和最小值,以及如何使用markLine标注平均值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

折线图 设置最高点,最低点, 平均线

在这里插入图片描述

核心代码

markPoint: {
    data: [
        {type: 'max', name: '最大值'},
        {type: 'min', name: '最小值'}
    ]
},
markLine: {
    data: [
        {type: 'average', name: '平均值'}
    ]
}

https://echarts.apache.org/zh/option.html#series-line.markPoint

series-line.markPoint. data Array
标注的数据数组。每个数组项是一个对象,有下面几种方式指定标注的位置。

通过 x, y 属性指定相对容器的屏幕坐标,单位像素,支持百分比。
coord 属性指定数据在相应坐标系上的坐标位置,单个维度支持设置 'min', 'max', 'average'

直接用 type 属性标注系列中的最大值,最小值。这时候可以使用 valueIndex 或者 valueDim 指定是在哪个维度上的最大值、最小值、平均值。

当多个属性同时存在时,优先级按上述的顺序。

完整代码

option = {
    title: {
        text: '未来一周气温变化',
        subtext: '纯属虚构'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['最高气温', '最低气温']
    },
    toolbox: {
        show: true,
        feature: {
            dataZoom: {
                yAxisIndex: 'none'
            },
            dataView: {readOnly: false},
            magicType: {type: ['line', 'bar']},
            restore: {},
            saveAsImage: {}
        }
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    },
    yAxis: {
        type: 'value',
        axisLabel: {
            formatter: '{value} °C'
        }
    },
    series: [
        {
            name: '最高气温',
            type: 'line',
            data: [10, 11, 13, 11, 12, 12, 9],
            markPoint: {
                data: [
                    {type: 'max', name: '最大值'},
                    {type: 'min', name: '最小值'}
                ]
            },
            markLine: {
                data: [
                    {type: 'average', name: '平均值'}
                ]
            }
        },
        {
            name: '最低气温',
            type: 'line',
            data: [1, -2, 2, 5, 3, 2, 0],
            markPoint: {
                data: [
                    {name: '周最低', value: -2, xAxis: 1, yAxis: -1.5}
                ]
            },
            markLine: {
                data: [
                    {type: 'average', name: '平均值'},
                    [{
                        symbol: 'none',
                        x: '90%',
                        yAxis: 'max'
                    }, {
                        symbol: 'circle',
                        label: {
                            position: 'start',
                            formatter: '最大值'
                        },
                        type: 'max',
                        name: '最高点'
                    }]
                ]
            }
        }
    ]
};
### Web可视化中标记点和标记线的实现 在Web可视化中,为了增强图表的表现力以及数据的理解程度,通常会加入标记点和标记线来突出显示特定的数据点或者趋势。对于这些功能,在基于JavaScript的库如ECharts、D3.js等都有很好的支持。 #### 使用 ECharts 实现标记点与标记线 ECharts 是一个非常流行的用于创建交互式图表的 JavaScript 库。通过配置项可以轻松地向折线图或其他类型的图形添加标记点和标记线[^1]。 下面是一个简单的例子展示如何利用 ECharts 来设置标记点和标记线: ```javascript // 初始化echarts实例 var myChart = echarts.init(document.getElementById('main')); option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [{ data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'line', markPoint: { // 配置标记点 data: [ {type: 'max', name: '最大值'}, {type: 'min', name: '最小值'} ] }, markLine: { // 配置标记线 data: [ {type: 'average', name: '平均值'} ] } }] }; myChart.setOption(option); ``` 这段代码展示了怎样在一个时间序列上绘制带有最高最低值作为标记点,并且画出一条代表均值水平的标记线[^1]。 #### D3.js 中实现自定义标记点和标记线 如果更倾向于底层控制,则可以选择像D3这样的工具来进行更加灵活的操作。这里给出一段基本示例说明如何手动添加SVG元素表示标记点或线条到现有路径之上[^2]: ```javascript const svg = d3.select("svg"); const margin = ({top: 20, right: 30, bottom: 40, left: 50}); const width = +svg.attr("width") - margin.left - margin.right; const height = +svg.attr("height") - margin.top - margin.bottom; // 假设已经有一个g元素绑定了数据并渲染成了曲线... let lineGenerator = d3.line() .x(d => xScale(d.date)) .y(d => yScale(d.value)); // 添加标记点 (假设我们想要标注某些特殊日期的位置) data.forEach((d,i) => { if(specialCondition(i)){ svg.append("circle") .attr("cx", xScale(d.date)) .attr("cy", yScale(d.value)) .attr("r", 5) .style("fill","red"); } }); // 绘制一条垂直于X轴的参考线指向某一天的具体数值处 svg.append("line") .attr("x1", xScale(targetDate)) .attr("y1", 0) .attr("x2", xScale(targetDate)) .attr("y2", height) .style("stroke-dasharray", ("3, 3")) .style("stroke", "black"); ``` 上述片段演示了当满足一定条件时会在指定位置放置红色圆圈作为标记点;同时也示范了一种方法用来增加辅助性的虚线以指示具体的时间节点上的取值情况[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拿我格子衫来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值