如何修改SVG<g>元素的尺寸?Recharts图表X轴元素尺寸调整求助
解决Recharts中X轴元素尺寸无法修改的问题
嘿,我来帮你搞定这个困扰!首先得搞清楚一个关键问题:SVG里的
再结合你提供的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内部元素的尺寸(如果需要更精细控制)
如果你的图标还是显示不对,可能是translate值,或者调整path的d属性来缩放图标,也可以给scale变换:
// 比如缩小图标到80% <g transform={`translate(10,10) scale(0.8)`} fill="green" stroke="green"> {/* path内容 */} </g>
3. 用CSS强制控制(不推荐,但应急可用)
如果你临时需要快速生效,可以给外层!important来覆盖Recharts的默认样式:
.custom-tick-icon { width: 20px !important; height: 20px !important; }
然后在自定义图标组件里加上这个类:
<svg className="custom-tick-icon" style={{ cursor: 'pointer' }}> {/* 内部元素 */} </svg>
总结一下:不要试图给
内容的提问来源于stack exchange,提问作者foreignChimichurri
相关产品推荐
相关产品推荐

