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

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

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

如何让它们完整显示?在文档中找不到我的答案。

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

重要:“宽度”不是问题,它不知何故被一种白线覆盖……另外,我尝试了很多“宽度”尺寸

我指的问题是:

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

最佳答案

解决方案 1:增加 margin

您可以设置 left属性(property) marginResponsiveBar .在以下示例中设置为 240px:

<ResponsiveBar
  ........
  margin={{ top: 50, right: 150, bottom: 50, left: 240 }}
  ........
/>

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

style={{
    .....
    margin: "0"
}}

结果:

Sandbox

解决方案 2:工具提示

如果你不想增加 margin ,你可以覆盖 formataxisLeft 中发挥作用 Prop 和:

  • 将字符串剪成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

Sandbox

https://stackoverflow.com/questions/66359281/

相关文章:

modelica - 如何在创建实例之前在模型中重新声明包?

c++ - CMake 找不到生成的 Visual Studio 15 2017 实例,但可以与 V

java - 如何使用流将映射值聚合到集合中

regex - 计算 Perl 中字符串中非空白字符的数量

c - 如何打印从 C 中的 scanf 输入整数开始递减的奇数?

java - 使用 LinkedHashMap 的字符串中的第一个唯一字符

javascript - 翻转所有卡片,但想一张一张地翻转

c - execl参数混淆

c++ - 如何在 constexpr if-else 链中导致静态错误?

python - 获取包含在列表列表中的字典的值