Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何动态确定缩放函数的类型?_Javascript_D3.js - Fatal编程技术网

Javascript 如何动态确定缩放函数的类型?

Javascript 如何动态确定缩放函数的类型?,javascript,d3.js,Javascript,D3.js,我有密码: let scale = d3.scale.log(); //How to determine that 'scale' variable is a logarithmic scaling function? scale = d3.scale.ordinal(); //In this case how to determine that 'scale' variable is an ordinal scaling function? 尺度函数的某些属性或某些方法是否可以帮助我? 我

我有密码:

let scale = d3.scale.log();
//How to determine that 'scale' variable is a logarithmic scaling function?

scale = d3.scale.ordinal();
//In this case how to determine that 'scale' variable is an ordinal scaling function?
尺度函数的某些属性或某些方法是否可以帮助我?
我需要这些信息,以便使用HTML画布API绘制特定于比例的轴。

如果您只需要确定它是否是顺序比例,则可以使用:

scale.hasOwnProperty("rangePoints")
只有序数标度才有这种方法


另一个想法是,如果您正在创建比例,只需自己跟踪即可:

scale = d3.scale.log();
scale.type = "log";
scale = d3.scale.linear();
scale.type = "linear";

两个尺度都只是函数,没有与尺度函数相关联的属性来确定它是什么样的。也就是说,即使有一种方法来发现规模类型,你也应该考虑其他选择。您的用例是什么?@Ankit我需要确定另一个函数,如linear等。@KirillA.Khalitov,更简单的方法是自己跟踪它。我需要更优雅的代码,如
d3.axis
approach:
var xAxis=d3.svg.axis().scale(x)
在这段代码中,我没有指定缩放类型,我只是传递了“x”缩放函数。它在d3中是如何工作的?我了解了d3的源代码。@KirillA.Khalitov Mark在这里是正确的。D3的轴只“关心”一个刻度是否有序,它通过检查它是否有
rangeBand()
方法来确定这一点(请参阅)。除此之外,无论是对数比例还是线性比例,都与轴无关。我们不知道你的代码在用比例做什么,但可以说,如果d3轴不需要关心它是什么类型的非顺序比例,那么你的代码也可以绕过它。马克建议在天平上加一个
类型
,这是合理的,尽管有点脆弱。