我的温度范围是33度到64度。我试图找出沿600像素的y轴59度的像素位置。这是一个柱形图。

完全公开,这是我已经努力了一段时间的作业,只是还没有弄清楚。

var scale = d3.scale.linear().domain([33,64]).range([0,64]);


scale(59)返回53.677419354838705这是错误的答案。
600-53.677419354838705也是错误的答案。

我可能会缺少什么?

谢谢。

最佳答案

域是值的完整集合,因此,在这种情况下,是您的所有温度,从33到64。范围是函数的结果值的集合,在此情况下,是将温度从0缩放到的结果值。 600

因此,您几乎可以使用正确的范围了-在这种情况下,您的范围应该是y轴的跨度(0-600):

var scale = d3.scale.linear().domain([33, 64]).range([0, 600]);

这将导致scale(59)提供503.2258064516129的输出。

关于d3.js - 了解D3域和范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42973502/

10-13 03:39