了解D3域和范围

mar*_*shp 12 d3.js

我的温度范围是33到64华氏度.我试图找出横跨600像素的y轴59度的像素位置.这是一个柱形图.

完全披露,这是我已经努力了一段时间的功课,而且还没有弄清楚.

var scale = d3.scale.linear().domain([33,64]).range([0,64]);
Run Code Online (Sandbox Code Playgroud)

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

我可能会失踪什么?

谢谢.

Mat*_*eur 29

结构域是完整的一组值,所以在这种情况下,也就是所有的温度下进行,从33到64.范围是该组的函数的结果值,在这种情况下,所得从0缩放您的温度下的值600.

所以你几乎就在那里,你只是使用了错误的范围 - 在这种情况下你的范围应该是y轴的范围(0 - 600):

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

这将导致scale(59)给出一个输出503.2258064516129.

  • @martinbshp你为什么说"我得错了答案"?什么是*正确答案*?考虑到你描述的问题,Le Fleur的回答是正确的. (2认同)