我的温度范围是33到64华氏度。我试图找出横跨600像素的y轴59度的像素位置。这是一个柱形图。
完全披露,这是我一直在努力解决的功课,而且还没有弄明白。
var scale = d3.scale.linear().domain([33,64]).range([0,64]);
scale(59)返回53.677419354838705,这是错误的答案。 600 - 53.677419354838705也是错误的答案。
我可能会缺少什么?
谢谢。
答案 0 :(得分:25)
域是完整的值集,因此在这种情况下,这是您的所有温度,从33到64. 范围是结果值的集合函数的一个函数,在这种情况下是将温度从0调整到600的结果值。
所以你几乎就在那里,你只是使用了错误的范围 - 在这种情况下你的范围应该是y轴的范围(0 - 600):
var scale = d3.scale.linear().domain([33, 64]).range([0, 600]);
这将导致scale(59)
输出503.2258064516129
。