tickFormat是连接的

时间:2016-10-21 16:08:02

标签: javascript d3.js

对于我的轴,我有以下tickFormat

.tickFormat(data.map(function (d) {
    if(ChartJourney.group_by == 'weeks') {
        console.log(moment(d.date).format('YYYY-WW'));
        return moment(d.date).format('YYYY-WW');
    } else
        return d.date;
}));

在控制台中我看到了:

2015-23
2015-24
2015-25
2015-26

但是在图表上我看到4个刻度都具有相同的格式,如:

2015-23,2015-24,2015-25,2015-26

为什么格式以逗号分隔,就像每个tick一样?特别是从控制台我只看到它循环了4次。

2 个答案:

答案 0 :(得分:1)

删除data.map:

.tickFormat(function (d) {
    if(ChartJourney.group_by == 'weeks') {
        console.log(moment(d.date).format('YYYY-WW'));
        return moment(d.date).format('YYYY-WW');
    } else
        return d.date;
});

.tickFormat可以接受函数或对象。使用函数时,将为每个数据点调用该函数。这就是你想要的。如果您不使用函数,则该值将用于每个tick。使用data.map时,将立即评估地图。您将使用映射的数组(不是函数)调用.tickFormat,该数组将用于每个tick。

答案 1 :(得分:0)

我不仅要根据@ Marcelo的帖子删除地图,而且还应该d而不是d.date

.tickFormat(function (d) {
    if(ChartJourney.group_by == 'weeks') {
        console.log(moment(d).format('YYYY-WW'));
        return moment(d).format('YYYY-WW');
    } else
        return d;
});