You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache ECharts Angular:如何让堆叠折线图的markLine显示在顶层?

解决Apache ECharts中MarkLine被堆叠折线遮挡的问题

针对你遇到的MarkLine始终显示在堆叠折线下方的问题,可以通过以下几种方式解决:

方法1:将MarkLine整合到顶层堆叠系列中

把MarkLine直接配置在最后一个堆叠折线系列里,并给MarkLine单独设置z属性,确保它在该系列的填充区域和折线之上:

{
  // 其他配置项
  series: [
    { 
      name: '1', 
      type: 'line', 
      stack: 'Total', 
      areaStyle: { opacity: 1 }, 
      showSymbol: false, 
      data: [...] 
    },
    { 
      name: '2', 
      type: 'line', 
      stack: 'Total', 
      areaStyle: { opacity: 1 }, 
      showSymbol: false, 
      data: [...],
      markLine: { 
        z: 100, // 强制MarkLine层级高于当前系列的元素
        label: { show: false },
        symbol: 'none', 
        data: [ { symbol: 'none', xAxis: 'xxx' } ] 
      }
    }
  ]
}

方法2:调整独立MarkLine系列的z属性而非zLevel

如果坚持使用独立系列承载MarkLine,将系列的z属性设为远高于其他堆叠系列的值(无需设置zLevel,同层级下z值越大渲染越靠上):

{
  // 其他配置项
  series: [
    { 
      name: '1', 
      type: 'line', 
      stack: 'Total', 
      areaStyle: { opacity: 1 }, 
      showSymbol: false, 
      data: [...],
      z: 1 
    },
    { 
      name: '2', 
      type: 'line', 
      stack: 'Total', 
      areaStyle: { opacity: 1 }, 
      showSymbol: false, 
      data: [...],
      z: 2 
    },
    // MarkLine独立系列
    { 
      name: '当前日期线', 
      type: 'line', 
      z: 100, // 远高于其他系列的z值
      data: [], // 空数据不影响MarkLine渲染
      markLine: { 
        label: { show: false },
        symbol: 'none', 
        data: [ { symbol: 'none', xAxis: 'xxx' } ] 
      }
    }
  ]
}

关键原因说明

  • 堆叠折线的areaStyle是不透明填充区域(opacity:1),会完全覆盖下方元素,必须让MarkLine的渲染层级高于这些填充区域。
  • zLevel是创建独立画布层级,默认所有系列都在zLevel:0,部分场景下单独设置zLevel可能因系列无数据或框架封装问题失效;而z是同画布层级内的元素优先级,设置更高的z值更稳定可靠。

内容的提问来源于stack exchange,提问作者rnwcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 00:52:35