2013-10-02 72 views
1

我目前正在處理堆疊條形圖,並且遇到了軸標籤的問題。在第一次臉紅時標籤看起來很好,但我注意到Y軸頂部並不總是有一個勾號。下面貼了一張照片。d3.js規模不會在頂部放置刻度

Graph showing no ticks above 120,000

正如你所看到的,上面有12萬沒有蜱即使有一間酒吧,顯然超出該值。我意識到軸正在定期創建刻度,但是有沒有辦法強制最後一個刻度值成爲刻度的最大值?如果不是的話,在所有事情都說完之後,如何在規模的頂部畫一個額外的線條/標籤會是一個更好的解決方案?

的代碼爲我的規模和軸低於:

var max = d3.max(data, function(d) { return d.red_value + d.blue_value; }); 

var labelScaleY = d3.scale.linear() 
        .domain([0, max]) 
        .rangeRound([svg_height-40, 0]); 

svg.append("g") 
    .attr("class", "y_axis") 
    .call(d3.svg.axis() 
      .scale(labelScaleY) 
      .orient("left")) 
    .attr("transform", "translate(60,20)"); 

svg.selectAll("line.y_rule").data(labelScaleY.ticks()).enter() 
          .append("line") 
          .attr({ 
           "class":"y_rule", 
           "x1":0, 
           "x2":(svg_width-60), 
           "y1":function(d){ return labelScaleY(d);}, 
           "y2":function(d){ return labelScaleY(d);}, 
           "fill":"none", 
           "shape-rendering":"crispEdges", 
           "stroke":"black", 
           "stroke-width":"1px", 
           "transform":"translate(60,20)" 
          }); 

回答