在水平 Victory 条形图中定位 y 轴标签
Positioning y-axis labels in a horizontal Victory bar chart
我在使用水平条的 VictoryChart
中遇到布局问题。我试图让标签在下面的垂直轴上左对齐:
我使用的相关代码是
<VictoryChart domainPadding={{ x: [20, 20] }}>
<VictoryAxis
dependentAxis={true}
tickValues={[0, 2, 4, 6, 8, 10, 12, 14]}
/>
<VictoryAxis
labelComponent={<VictoryLabel textAnchor="start" />}
style={{
tickLabels: {
fontSize: 10,
textAnchor: "end"
}
}}
/>
<VictoryBar
data={data}
horizontal={true}
domain={{ y: [-10, 15] }}
x="name"
y="value"
/>
</VictoryChart>
并且我创建了一个沙箱 here。
我必须添加 tickLabels
样式 textAnchor: "end"
才能让标签首先可见,但我非常希望它们与一条公共的左垂直线对齐,而不是右对齐就像他们现在一样。我尝试将 labelComponent
定义为 <VictoryLabel textAnchor="start" />
但这没有达到我希望的效果。在检查生成的 SVG 后,它似乎控制文本如何锚定在它的容器元素中,但我真正需要做的是将整个容器向左移动。
我已经多次阅读 API 文档,但未能发现任何看起来有用的内容。 VictoryGroup
看起来很有希望,但文档明确告诉我不要将它与轴组件一起使用。
好吧,我只是在这里的道具丛林中迷路了。
解决方案首先是不要尝试使用 CSS 样式来执行此操作,因此必须取消 tickLabels.textAnchor: "end"
样式。其次,有不止一个标签组件,对于 VictoryAxis
上的标签,相关的 属性 是 tickLabelComponent
而不是 labelComponent
.
将第二个 VictoryAxis
组件替换为
<VictoryAxis
tickLabelComponent={(
<VictoryLabel
verticalAnchor="middle"
textAnchor="start"
x={0}
/>
)}
style={{
tickLabels: {
fontSize: 10,
}
}}
/>
解决了我的问题。
我在使用水平条的 VictoryChart
中遇到布局问题。我试图让标签在下面的垂直轴上左对齐:
我使用的相关代码是
<VictoryChart domainPadding={{ x: [20, 20] }}>
<VictoryAxis
dependentAxis={true}
tickValues={[0, 2, 4, 6, 8, 10, 12, 14]}
/>
<VictoryAxis
labelComponent={<VictoryLabel textAnchor="start" />}
style={{
tickLabels: {
fontSize: 10,
textAnchor: "end"
}
}}
/>
<VictoryBar
data={data}
horizontal={true}
domain={{ y: [-10, 15] }}
x="name"
y="value"
/>
</VictoryChart>
并且我创建了一个沙箱 here。
我必须添加 tickLabels
样式 textAnchor: "end"
才能让标签首先可见,但我非常希望它们与一条公共的左垂直线对齐,而不是右对齐就像他们现在一样。我尝试将 labelComponent
定义为 <VictoryLabel textAnchor="start" />
但这没有达到我希望的效果。在检查生成的 SVG 后,它似乎控制文本如何锚定在它的容器元素中,但我真正需要做的是将整个容器向左移动。
我已经多次阅读 API 文档,但未能发现任何看起来有用的内容。 VictoryGroup
看起来很有希望,但文档明确告诉我不要将它与轴组件一起使用。
好吧,我只是在这里的道具丛林中迷路了。
解决方案首先是不要尝试使用 CSS 样式来执行此操作,因此必须取消 tickLabels.textAnchor: "end"
样式。其次,有不止一个标签组件,对于 VictoryAxis
上的标签,相关的 属性 是 tickLabelComponent
而不是 labelComponent
.
将第二个 VictoryAxis
组件替换为
<VictoryAxis
tickLabelComponent={(
<VictoryLabel
verticalAnchor="middle"
textAnchor="start"
x={0}
/>
)}
style={{
tickLabels: {
fontSize: 10,
}
}}
/>
解决了我的问题。