如何防止 Nivo 刻度轴文本(条形图)中的文本截断

sal*_*108 3 charts bar-chart reactjs nivo-react

我的 Y 轴键(或刻度)相当长,并且它们被截断但这并不是因为图形本身缺乏足够的宽度,使用检查工具,我可以看到为其分配了足够的空间,但是分配给整个图的框架是不够的...这应该是 ResponsiveBar...

图像

更改 X 轴的“变换”值使文本显示完整(几乎),但随后图例被截断:

图像

我怎样才能让它们完整地出现?在文档中找不到我的答案。

这是一个重现问题的沙箱:https://codesandbox.io/s/missing-legends-text-pns6v

重要提示:“宽度”不是问题,它以某种方式被某种白线覆盖......另外,我尝试了许多“宽度”尺寸

我所指的问题是这样的: 图像

很想知道是否有一种方法可以换行文本,或者通过添加悬停效果来截断文本以显示全文

Ber*_*tel 10

解决方案1:增加保证金

您可以在of中设置该left属性。在以下示例中设置为 240px:marginResponsiveBar

<ResponsiveBar
  ........
  margin={{ top: 50, right: 150, bottom: 50, left: 240 }}
  ........
/>
Run Code Online (Sandbox Code Playgroud)

您还需要更新容器样式以展开图表,将边距设置为 0,例如:

style={{
    .....
    margin: "0"
}}
Run Code Online (Sandbox Code Playgroud)

结果: 在此输入图像描述

沙盒

解决方案2:工具提示

如果你不想增加边距,你可以重写props 和format中的函数:axisLeft

  • 像这样剪断绳子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
}}
Run Code Online (Sandbox Code Playgroud)

查看这个帖子

沙盒

在此输入图像描述