d3js X轴数据按季度分组按年份分组

时间:2014-11-14 01:13:54

标签: javascript angularjs d3.js angularjs-directive

我正在努力创建一个年度有两个X轴和子组的折线图。因此,例如,如果我有4个季度(Q3,Q4,Q1,Q2)和Q3,Q4属于2014年,而Q1,Q2属于2015年,我将能够在第二个X轴上描绘这个。我在下面发布的imgur链接中有一个这样的示例,以及使用几个月而不是四分之一的类似示例。有没有人对我如何能够做到这一点有任何见解或例子?

http://imgur.com/KXjXbxc

http://jsfiddle.net/bhyvn5hv/

var xAxis1 = d3.svg.axis()
.scale(x)
//.ticks(d3.time.months)
.tickFormat(monthformat)
.tickSize(5,0)
.orient("bottom");
var xAxis2 = d3.svg.axis()
.scale(x)
.ticks(d3.time.years, 1)
.tickFormat(yearformat)
.tickSize(5,0)
.orient("bottom");

1 个答案:

答案 0 :(得分:1)

这个怎么样? JSFiddle

var quarter = function(date, i){
      if(i > 0){

        var date2 = new Date();
        date2.setMonth(date.getMonth() - 1);
        q = Math.ceil(( date2.getMonth()) / 3 );
        return "Q" + q;
      }
}

var xAxis3 = d3.svg.axis()
    .scale(x)
    .orient("bottom")
    .ticks(d3.time.months, 3)
    .tickSize(5, 0)
    .tickFormat(quarter);

svg.append("g")
    .attr("class", "x axis")
    .attr("transform", "translate(0," + (height + 25) + ")")
    .call(xAxis3);