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

Recharts如何自定义Y轴刻度标签,实现布尔值0/1映射为No/Yes?

Recharts Y轴布尔类型值自定义刻度解决方案

问题原因

你的实现未生效主要是两个基础错误导致:

  • Prop传参不匹配:你给CustomYAxisTick传递的属性是type={itemType},但组件内部接收的参数名是itemType,导致布尔类型的判断逻辑永远不触发
  • 未绑定刻度坐标:自定义tick组件返回的<text>元素没有透传x、y坐标属性,导致刻度文本渲染到可视区域外,看似功能未生效

修复代码

1. YAxis配置部分

可额外增加布尔类型时的Y轴范围限制,避免出现多余中间刻度:

// 提前计算Y轴范围
const yAxisDomain = itemType === "BOOLEAN" ? [0, 1] : [0, domainMax];

// 渲染Y轴,注意传递的prop名和组件接收名一致
<YAxis 
  interval="preserveStartEnd" 
  domain={yAxisDomain} 
  tick={<CustomYAxisTick itemType={itemType} />} 
/>

2. CustomYAxisTick组件实现

补充坐标和默认对齐样式,和原生刻度表现一致:

const CustomYAxisTick = ({ x, y, payload, itemType }: any) => {
  if (itemType === "BOOLEAN") {
    if(payload.value === 0) {
      return <text x={x} y={y} textAnchor="end" dominantBaseline="middle">No</text>
    };
    if(payload.value === 1) {
      return <text x={x} y={y} textAnchor="end" dominantBaseline="middle">Yes</text>
    };
    return null;
  } else {
    return (
      <text x={x} y={y} textAnchor="end" dominantBaseline="middle">
        {payload.value}
      </text>
    );
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:48:03