javascript - d3 从图表中删除小数值

标签 javascript d3.js

我的 d3 图表在某些缩放级别上放入 0 和 1 之间的中间值,0 和 1 实际上是我的数据集的一部分,因此我可以使用 tickFormat 控制它们在 yAxis 参数中的显示方式访问器。

我不希望 d3 显示它创建的中间十进制值。

由于 d3 是凭空创建它们的,所以我不能简单地执行 tickFormat(d3.format(", .0f") 因为这只会从数据集中的元素中删除小数。

如果 d3 生成的假值是十进制值,如何删除它们?在进一步缩小的缩放级别上,我确实希望看到中间值。

最佳答案

有两件事可能会有所帮助,来自 https://github.com/mbostock/d3/wiki/SVG-Axes :

# axis.ticks([arguments…])

获取或设置传递给底层刻度的刻度函数的参数。指定的参数将传递给scale.ticks以计算刻度值。对于定量刻度,请指定所需的刻度数,例如 axis.ticks(20)

这会提示要使用的刻度数(尽管它并不总是听您的),但可以减少放大时的困惑。

或者:

# axis.tickValues([values])

获取或设置显式刻度值。如果指定了数组 values,则这些值将用于生成刻度,而不是使用刻度的刻度生成器。如果 values 为空,则清除任何先前设置的显式刻度值,恢复到刻度的刻度生成器。如果未指定 values,则返回当前设置的刻度值(如果有)。例如,要生成特定值的报价:

var xAxis = d3.svg.axis()
    .scale(x)
    .tickValues([1, 2, 3, 5, 8, 13, 21]);

这会显式设置刻度,因此您可以将它们设置为 [0, 1],尽管当用户缩小时您必须手动修复它们。也许您可以只计算缩放范围内的整数等。

关于javascript - d3 从图表中删除小数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15578189/

相关文章:

javascript - 将 async/await 与 promise 和 appendChild 结合使用时,应用程序停止工作

Javascript将空值数组转换为字符串

javascript - Node js 中的复杂递归

javascript - 如何在 d3 selection().exit() 之后删除父 DOM 节点

javascript - 了解为什么在 .attrTween 中使用三个嵌套函数

javascript - d3插值示例说明

javascript - 如何解析具有复杂嵌套和未命名数组的分页 JSON API 响应?

javascript - 如何在 .then() 链中访问先前的 promise 结果?

javascript - 高亮最近点d3js折线图和点图

javascript - 添加d3.behavior.zoom时,.on ("zoom",zoom),zoom undefined