Javascript 在D3 v4中为简单的CSV获取正确的折线图比例

Javascript 在D3 v4中为简单的CSV获取正确的折线图比例,javascript,csv,d3.js,Javascript,Csv,D3.js,我有以下几点,很简单 我想用这些数据画一个折线图。我发现用新版本的D3很难做到这一点 我尝试过各种方法,但这就是我目前所拥有的 var x = d3.scaleBand().range([0, width]); 然后稍后在d3.csv()中调用 x.domain(data, function(d) { return d.date; }); 那不行,我也试过: var x = d3.scaleOrdinal().range([0, width]); 但这也不起作用。我发现使用线性定量尺度更容

我有以下几点,很简单

我想用这些数据画一个折线图。我发现用新版本的D3很难做到这一点

我尝试过各种方法,但这就是我目前所拥有的

var x = d3.scaleBand().range([0, width]);
然后稍后在
d3.csv()中调用

x.domain(data, function(d) { return d.date; });
那不行,我也试过:

var x = d3.scaleOrdinal().range([0, width]);
但这也不起作用。我发现使用线性定量尺度更容易

更新

根据Gerardo的修正(顺便说一句,这是个好地方),我现在得到了:


在刻度中,
域必须是一个数组。那么这个,

x.domain(data, function(d) { return d.date; });
应该是:

x.domain(data.map(function(d) { return d.date; }));
您可以在这些演示中看到差异。首先,您的代码:

var数据=[{日期:2014年第一季度,收盘时间:58},
{日期:“2014年第二季度”,截止日期:48},
{日期:2014年第3季度,截止日期:67},
{日期:2014年第4季度,截止日期:33},
{日期:“2014年第一季度”,截止日期:27},
{日期:2014年第二季度,截止日期:87},
{日期:2014年第3季度,截止日期:23},
{日期:“2014年第4季度”,截止日期:56}];
var scale=d3.scaleOrdinal().domain(数据,函数(d){
返回日期;
});
console.log(scale.domain())

你看了吗?是的,我看了,但我的刻度不是
时间
,因此我为什么使用
刻度线
我知道我称它们为
2015年第一季度
。等等,但想象一下那是
苹果、橘子
。等等,非常好的位置@GerardoFurtado,尽管看起来仍然很混乱,请参见更新的Q。。喜欢用例子来解释,你是王牌,非常感谢!谢谢@GerardoFurtado,成功了。但我仍然不清楚为什么不能使用
scaleOrdinal
?我认为D3应该足够聪明,可以说我们在域数组中有X个项目,我将水平和平均地分割范围距离,不?不,这不是顺序刻度的工作方式。看看我刚做的这把小提琴,看看控制台:哈,我很惊讶!再次感谢@GerardoFurtado,这种行为对我来说太奇怪了,但我相信这是有原因的。非常感谢。