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

如何修改SVG<g>元素的尺寸?Recharts图表X轴元素尺寸调整求助

解决Recharts中X轴元素尺寸无法修改的问题

嘿,我来帮你搞定这个困扰!首先得搞清楚一个关键问题:SVG里的元素本身是没有宽高属性的,它只是一个用来分组子元素的容器,所以你直接给它设置width和height样式肯定不会生效。这也是你在控制台修改没效果的核心原因之一。

再结合你提供的SVG代码和Recharts的场景,我给你几个可行的解决方案:

1. 从根源入手:自定义Recharts的X轴Tick

因为Recharts会在组件重绘时(比如数据更新、窗口缩放)重新生成DOM,你手动在控制台改的样式会被直接覆盖,所以正确的做法是在代码里自定义X轴的tick元素:

// 先定义你的自定义图标组件
const CustomTickIcon = () => (
  <svg style={{ cursor: 'pointer' }} width="20px" height="20px">
    <g transform={`translate(10,10)`} fill="green" stroke="green">
      <path fill="current" fillRule="evenodd" d="M8,0 C3.58862306,0 0,3.58862306 0,8 C0,12.4113769 3.58862306,16 8,16 C12.4113769,16 16,12.4113769 16,8 C16,3.58862306 12.4113769,0 8,0 Z M12.0546875,6.3046875 L7.72131347,10.6379394 C7.59130859,10.7679443 7.42065431,10.833374 7.25,10.833374 C7.07934569,10.833374 6.90869141,10.7679443 6.77868653,10.6379394 L4.61206056,8.47131347 C4.35131837,8.21069338 4.35131837,7.78930663 4.61206056,7.52868653 C4.87268066,7.26794434 5.29394531,7.26794434 5.5546875,7.52868653 L7.25,9.22399903 L11.1120606,5.36206056 C11.3726807,5.10131837 11.7939453,5.10131837 12.0546875,5.36206056 C12.3153076,5.62268066 12.3153076,6.04394531 12.0546875,6.3046875 Z" transform="translate(.5)" />
    </g>
  </svg>
);

// 然后在XAxis组件中使用这个自定义tick
<XAxis
  tick={<CustomTickIcon />}
  tickSize={20} // 这里设置tick的整体尺寸,确保图标有足够空间
  tickPadding={5} // 调整图标和刻度文字的间距
  // 其他XAxis属性...
/>

2. 调整SVG内部元素的尺寸(如果需要更精细控制)

如果你的图标还是显示不对,可能是的transform或者内部path的尺寸问题。你可以修改的translate值,或者调整path的d属性来缩放图标,也可以给添加scale变换:

// 比如缩小图标到80%
<g transform={`translate(10,10) scale(0.8)`} fill="green" stroke="green">
  {/* path内容 */}
</g>

3. 用CSS强制控制(不推荐,但应急可用)

如果你临时需要快速生效,可以给外层加一个类名,然后用CSS强制设置尺寸,注意要加!important来覆盖Recharts的默认样式:

.custom-tick-icon {
  width: 20px !important;
  height: 20px !important;
}

然后在自定义图标组件里加上这个类:

<svg className="custom-tick-icon" style={{ cursor: 'pointer' }}>
  {/* 内部元素 */}
</svg>

总结一下:不要试图给元素设置宽高,它本身不支持这个属性;优先通过Recharts的API自定义tick元素,这样不会被重绘覆盖;如果需要调整图标大小,要么改SVG内部的变换,要么控制外层的尺寸。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:22:51