超级码吏 2025-05-28 17:17 采纳率: 27.1%
浏览 44

echarts折线图引线边上怎么添加文字?

想要的效果:

img

我实现的效果:

img

半成品源码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>企业大事记时间轴</title>
        <script src="https://cdn.staticfile.org/echarts/5.4.2/echarts.min.js"></script>
        <style>
            #main {
                background-image: url(./lc_bg.png);
            }
        </style>
    </head>
    <body>
        <div id="main" style="width: 100vw;height:600px;"></div>


        <script>
            var myChart = echarts.init(document.getElementById('main'));
            // 模拟数据(2015-2023年)
            var eventData = [{
                    time: "2005",
                    event: "公司成立",
                    value: 60,
                    detail: "在北京中关村创立,注册资本500万元"
                },
                {
                    time: "2006",
                    event: "首款产品上市",
                    value: 50,
                    detail: "发布企业级软件V1.0,获得市场认可"
                },
                {
                    time: "2007",
                    event: "华东分公司成立",
                    value: 45,
                    detail: "设立上海分公司,拓展华东市场"
                },
                {
                    time: "2008",
                    event: "获高新技术认证",
                    value: 40,
                    detail: "通过国家高新技术企业认定"
                },
                {
                    time: "2009",
                    event: "完成A轮融资",
                    value: 48,
                    detail: "获得红杉资本2000万美元投资"
                },
                {
                    time: "2010",
                    event: "用户突破100万",
                    value: 55,
                    detail: "企业用户数达到120万家"
                },
                {
                    time: "2011",
                    event: "移动端产品发布",
                    value: 45,
                    detail: "推出移动办公解决方案"
                },
                {
                    time: "2012",
                    event: "海外市场拓展",
                    value: 60,
                    detail: "在新加坡设立国际业务总部"
                },
                {
                    time: "2013",
                    event: "年营收突破10亿",
                    value: 52,
                    detail: "全年营收达12.8亿元"
                },
                {
                    time: "2014",
                    event: "行业解决方案发布",
                    value: 50,
                    detail: "推出五大行业定制解决方案"
                },
                {
                    time: "2015",
                    event: "成功上市",
                    value: 55,
                    detail: "在深交所创业板挂牌上市"
                },
                {
                    time: "2016",
                    event: "人工智能实验室",
                    value: 42,
                    detail: "建立AI研发中心,团队规模达200人"
                },
                {
                    time: "2017",
                    event: "品牌升级",
                    value: 55,
                    detail: "启用新品牌标识,确立'科技赋能'理念"
                },
                {
                    time: "2018",
                    event: "社会责任报告",
                    value: 60,
                    detail: "首次发布企业社会责任报告"
                },
                {
                    time: "2019",
                    event: "全球创新百强",
                    value: 77,
                    detail: "荣登《财富》全球创新企业TOP100"
                },
                {
                    time: "2020",
                    event: "抗疫科技支援",
                    value: 70,
                    detail: "向医疗机构捐赠智能防疫系统"
                },
                {
                    time: "2021",
                    event: "元宇宙布局",
                    value: 70,
                    detail: "启动元宇宙办公场景研发项目"
                },
                {
                    time: "2022",
                    event: "国家级实验室",
                    value: 50,
                    detail: "获批建设国家级企业技术中心"
                },
                {
                    time: "2023",
                    event: "全球战略发布",
                    value: 60,
                    detail: "公布'2025全球领先计划'"
                },
                {
                    time: "2024",
                    event: "绿色计算中心",
                    value: 51,
                    detail: "建成首个零碳数据中心"
                },
                {
                    time: "2025",
                    event: "二十周年庆典",
                    value: 80,
                    detail: "举办全球合作伙伴峰会"
                }
            ];


            const yMax = 100;
            var option = {
                grid: {
                    bottom: '0px',
                    top: '25px',
                    left: '18%',
                    right: '18%'
                },
                xAxis: {
                    type: 'time',
                    show: false,
                },
                yAxis: {
                    max: yMax,
                    show: false
                },
                dataZoom: [{
                        height: 6,
                        start: 0,
                        end: 25
                    },
                    {
                        type: 'inside',
                    }
                ],
                tooltip: {
                    trigger: 'item',
                    formatter: function(params) {
                        return `
                            <b>${params.data.time}年</b>
                            <br/>${params.data.event}
                            <br/>${params.data.detail}
                        `;
                    }
                },
                series: [{
                    type: 'line',
                    smooth: true,
                    data: eventData.map(item => ({
                        ...item,
                        name: item.event,
                        value: [item.time, item.value]
                    })),
                    lineStyle: {
                        color: '#c1c5d0',
                        width: 12,
                    },
                    markPoint: {
                        symbol: 'circle',
                        symbolSize: 20,
                        itemStyle: {
                            color: '#2f89cf',
                            borderColor: '#fff',
                            borderWidth: 2
                        },
                        label: {
                            show: true,
                            position: 'bottom',
                            color: '#666',
                            fontSize: 22,
                            formatter: function(params) {
                                return params.data.time
                            }
                        },
                        data: eventData.map(item => ({
                            ...item,
                            name: item.event,
                            coord: [item.time, item.value],
                        }))
                    },
                    markLine: {
                        silent: true,
                        symbol: 'none',
                        lineStyle: {
                            color: '#2f89cf',
                            width: 2,
                            type: 'solid'
                        },
                        label: {
                            show: true,
                            position: 'start',
                            formatter: function(params) {
                                console.log(params);
                                return params.data.event;
                            },
                            color: '#333',
                            fontSize: 12,
                            backgroundColor: 'rgba(255,255,255,0.8)',
                            padding: [3, 5],
                            borderRadius: 3
                        },
                        data: eventData.map(item => {
                            const middle = yMax / 2;
                            const lineHeight = 30;
                            const coord1 = item.value > middle ? item.value - lineHeight : item.value + lineHeight;
                            return [{
                                    coord: [item.time, item.value],
                                    // label: {
                                    //     position: 'start',
                                    //     distance: [10, 0]
                                    // }
                                },
                                {
                                    coord: [item.time, coord1]
                                }
                            ]
                        })
                    }
                }]
            };


            myChart.setOption(option);
        </script>
    </body>
</html>
  • 写回答

6条回答 默认 最新

  • Nymph_Zhu 2025-05-28 17:54
    关注

    你写的markLine里面的label中params.data.event取不到值,所以不会显示

    评论

报告相同问题?

问题事件

  • 修改了问题 5月29日
  • 修改了问题 5月28日
  • 创建了问题 5月28日