【问题标题】:d3 axis not showing tick label if two ticks have the same value如果两个刻度具有相同的值,d3 轴不显示刻度标签
【发布时间】:2012-11-28 11:09:22
【问题描述】:

我已经修改了示例中的数据结构 d3.js yaxis not drawing all the ticks properly进入

       [{name: "john",value: 4500},
        {name: "peter",value: 3000},
        {name: "tom",value: 2500},
        {name: "john",value:2000}];

绘制图表时,第 4 个名字,即 2nd john 不会出现在图表中, 为什么这种行为以及如何让它出现在图表中

这里是它的乐趣http://jsfiddle.net/hyder/pFEEW/

【问题讨论】:

    标签: javascript charts d3.js


    【解决方案1】:

    如果您仔细观察,您会发现第一项和第四项的条形图绘制在相同的位置并重叠。

    根本问题是代码使用数据本身(重复)来识别单个元素。如果您希望不同的元素具有相同的数据值,则需要为它们提供唯一标识符,以便代码能够区分它们。代码中的刻度设置为相同的输入值将映射到相同的输出值,即如果您有相同的名称,则将在相同位置绘制条形。

    解决此问题的一种方法是使用唯一 ID 作为缩放函数的输入,然后使用格式化程序根据该 ID 制作标签。

    【讨论】:

    • 正如你所说,我为名称添加了 id,并绘制了图表,现在出现了单独的条形,我如何格式化标签以便我可以在轴 jsfiddle 上获取名称而不是 id网址:jsfiddle.net/hyder/VARjF/5
    • 你可以使用自定义的.tickFormat()函数——见jsfiddle.net/VARjF/6
    • 这是我正在寻找的答案,谢谢您的回答
    猜你喜欢
    • 2021-08-13
    • 2015-12-18
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 2013-11-16
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多