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

如何在ECharts中创建带圆心的半环形图?

在ECharts中实现自定义圆角柱状图的可行方案

方案1:精准配置itemStyle.borderRadius

ECharts的borderRadius支持数组格式,可分别设置柱子四个角的圆角半径,格式为[左上, 右上, 右下, 左下]。如果你之前仅设置单个数值,只会让四个角圆角一致,无法实现图中针对性的圆角效果,可按需求调整:

option = {
  xAxis: {
    type: 'category',
    data: ['类别1', '类别2', '类别3', '类别4']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      type: 'bar',
      data: [120, 200, 150, 80],
      itemStyle: {
        // 顶部两角圆角、底部两角直角,匹配常见的顶部圆角柱状图需求
        borderRadius: [8, 8, 0, 0],
        color: '#409eff'
      }
    }
  ]
};

若需要底部圆角、顶部直角,将数组改为[0, 0, 8, 8]即可;若要上下全圆角,直接设为8或[8,8,8,8]。

方案2:使用custom系列自定义绘制(复杂场景)

如果你的需求是更特殊的圆角样式(比如柱子中间段带圆角、不同高度柱子圆角自适应),可以用ECharts的custom系列,通过Canvas API手动绘制柱子:

option = {
  xAxis: {
    type: 'category',
    data: ['类别1', '类别2', '类别3', '类别4']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      type: 'custom',
      data: [120, 200, 150, 80],
      renderItem: function (params, api) {
        // 计算柱子的坐标和尺寸
        const xCenter = api.coord([api.value(0), 0])[0];
        const yTop = api.coord([api.value(0), api.value(1)])[1];
        const yBottom = api.coord([api.value(0), 0])[1];
        const barWidth = api.size([1, 0])[0] * 0.8; // 柱子宽度占比,可自行调整

        return {
          type: 'rect',
          shape: {
            x: xCenter - barWidth / 2,
            y: yTop,
            width: barWidth,
            height: yBottom - yTop,
            r: 8 // 统一圆角半径,也可针对不同角单独设置
          },
          style: api.style()
        };
      }
    }
  ]
};

这种方式完全自定义柱子形状,适配各种非常规圆角需求。

排查你之前的失效原因

你用itemStyle.borderRadius未达预期,大概率是以下情况:

  • 仅设置单个数值,未针对特定角配置数组
  • 圆角半径设置过大,超过柱子的高度/宽度,导致显示异常
  • 分组柱状图场景下,未给每个系列单独配置borderRadius,或配置层级错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:50:04