D3:如何在数据的最小/最大值和轴的最小/最大值之间增加边距?

时间:2018-08-07 14:49:53

标签: d3.js

如何在最小/最大值和我的最小/最大轴值之间添加一些空间?

这里是小提琴https://jsfiddle.net/ftgbhyqj/21/

如您所见,最小值和最大值始终用于y轴上的最小值/最大值。如何在数据的最大值和y轴的最大值之间添加一些额外的空间,例如可用高度的5%?

请参见以下屏幕截图。在数据的最大值和最大可用图表区域之间有一些额外的空间。

screenshot

我不是在谈论margin.topmargin.bottom,因为这也会使轴变小。

1 个答案:

答案 0 :(得分:2)

我认为最好直接操作缩放域,而不要仅依靠d3.extent()函数:https://jsfiddle.net/wmLd3r8z/。您可以使用时间序列数据在x轴上做一些更整洁的操作,但是希望这可以为您提供所需的信息。

const x_extent = d3.extent(data, d => d.ts);

const x = d3.scaleTime()
    .domain([x_extent[0] -1000, x_extent[1] + 1000])
    .range([0, w]);

const y_extent = d3.extent(data, d => d.value);
const y_extent_diff = 0.05 * Math.abs(y_extent[1] - y_extent[0]);

const y = d3.scaleLinear()
    .domain([y_extent[0] - y_extent_diff, y_extent[1] + y_extent_diff])
    .range([h, 0])