如何防止 Nivo 刻度轴文本(条形图)中的文本截断
How to prevent text truncation in Nivo ticks' axis text (Bar Chart)
我的 Y 轴键(或刻度)很长,它们被截断了
但这并不是因为图形本身没有足够的宽度,使用检查工具,我可以看到为它分配了足够的 space ,但是分配给整个图形的框架是不够的......而且那应该是 ResponsiveBar...
更改 X 轴的“变换”值会使文本完整显示(几乎),但图例会被截断:
如何让它们完整显示?在文档中找不到我的答案。
这里是重现问题的沙盒:https://codesandbox.io/s/missing-legends-text-pns6v
重要:'width' 不是问题,它以某种方式覆盖了一条白线...另外,我尝试了很多 'width' 尺码
我指的问题是这样的:
很想知道是否有一种方法可以将文本换行,或者通过添加悬停效果来截断以显示全文
解决方案 1:增加保证金
您可以在 ResponsiveBar
的 margin
中设置 left
属性。在以下示例中设置为 240px:
<ResponsiveBar
........
margin={{ top: 50, right: 150, bottom: 50, left: 240 }}
........
/>
您还需要更新容器样式以展开图表,例如将边距设置为 0:
style={{
.....
margin: "0"
}}
结果:
解决方案 2:工具提示
如果你不想增加保证金,你可以在 axisLeft
props 和 :
中覆盖 format
函数
- 像
New York, Manhatta...
那样剪切字符串
- 添加一个
<title>
标签来显示工具提示:
axisLeft={{
format: (v) => {
return v.length > 10 ? (
<tspan>
{v.substring(0, 10) + "..."}
<title>{v}</title>
</tspan>
) : (
v
);
},
tickSize: 5,
tickPadding: 5,
tickRotation: 0,
legend: "",
legendPosition: "middle",
legendOffset: -40
}}
checkout this post
我的 Y 轴键(或刻度)很长,它们被截断了 但这并不是因为图形本身没有足够的宽度,使用检查工具,我可以看到为它分配了足够的 space ,但是分配给整个图形的框架是不够的......而且那应该是 ResponsiveBar...
更改 X 轴的“变换”值会使文本完整显示(几乎),但图例会被截断:
如何让它们完整显示?在文档中找不到我的答案。
这里是重现问题的沙盒:https://codesandbox.io/s/missing-legends-text-pns6v
重要:'width' 不是问题,它以某种方式覆盖了一条白线...另外,我尝试了很多 'width' 尺码
我指的问题是这样的:
很想知道是否有一种方法可以将文本换行,或者通过添加悬停效果来截断以显示全文
解决方案 1:增加保证金
您可以在 ResponsiveBar
的 margin
中设置 left
属性。在以下示例中设置为 240px:
<ResponsiveBar
........
margin={{ top: 50, right: 150, bottom: 50, left: 240 }}
........
/>
您还需要更新容器样式以展开图表,例如将边距设置为 0:
style={{
.....
margin: "0"
}}
结果:
解决方案 2:工具提示
如果你不想增加保证金,你可以在 axisLeft
props 和 :
format
函数
- 像
New York, Manhatta...
那样剪切字符串
- 添加一个
<title>
标签来显示工具提示:
axisLeft={{
format: (v) => {
return v.length > 10 ? (
<tspan>
{v.substring(0, 10) + "..."}
<title>{v}</title>
</tspan>
) : (
v
);
},
tickSize: 5,
tickPadding: 5,
tickRotation: 0,
legend: "",
legendPosition: "middle",
legendOffset: -40
}}
checkout this post