D3:通过轴时刻度有什么作用?

时间:2014-06-06 21:46:03

标签: javascript d3.js scale axes

在d3中,如果你想创建一个轴,你可能会这样做:

var xAxis = d3.svg.axis()
.scale(x)

其中x是比例函数。我知道x的域定义了刻度的起始值和结束值。我无法理解x的范围如何改变结果轴。域在轴的上下文中映射到什么。

1 个答案:

答案 0 :(得分:2)

考虑一下创建任何数据集的可视化表示必须做什么。您必须将每个数据点(例如1百万美元)转换为屏幕上的一个点。如果您的数据的最小值为$ 0,最大值为$ 1000000,则域名为0到1000000.现在要在计算机屏幕上显示数据,您必须将每个数据点(例如25美元)转换为多个像素。您可以尝试简单的1对1线性转换(25美元转换为屏幕上的25像素),在这种情况下,您的范围将与您的域= 0到1000000相同。但这需要一个血腥的大屏幕。我们更可能知道我们希望图形在屏幕上显示的大小,因此我们相应地设置我们的范围(例如0到600)。

d3比例功能可将数据集中的每个数据点转换为您范围内的相应值。这使它可以在屏幕上显示。前面的示例是一个简单的转换,因此d3.scale()函数对您没有太大作用,但是花一些时间将数据点转换为可视化表示,您将很快发现某些情况,其中scale函数正在执行大量工作对你而言。

在轴的特定情况下,缩放功能完全相同。它正在为每个'tick'进行转换(到像素)并将它们放在屏幕上。