簡體   English   中英

d3js:為tickPadding提供函數

[英]d3js: supply a function to tickPadding

假設我有一個圖,其中x軸刻度標簽是很長的字符串 ,所以我想交替使用刻度線填充(文本和x軸之間的垂直距離),以使刻度標簽不重疊。

我知道可以通過選擇tick元素並應用transform屬性來實現后期渲染。 但我想這樣做:

var xAxis = d3.svg.axis()
.scale(x0)
.orient("bottom")
.tickSize(0)
.tickPadding(function(i) {
  // some logic here to determine the alternating-height strategy by index, e.g.
  return i % 2 ? 20 : 30;
 });

這在d3中不起作用-文檔( https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-tickPadding )說tickPadding只需要像素數。 有一個更好的方法嗎? 猴子補丁d3的axis.tickPadding函數接受一個函數或一個數字,然后在繪制刻度時應用該函數?

我也希望這樣做。 我用的是周數,所以有點局促。 基本上x軸看起來像

111213141516171819 

我希望將它們堆疊起來。 我最終這樣做了

$('.tick text').each(function(i){
   var yval = this.getAttribute("y");
   if( i % 2 == 0 )this.setAttribute("y",parseInt(yval)+10);
});

一旦繪制圖形。 我確保在底部也包括一些額外的邊距(10)。 結果是

  12  14  16  18
11  13  15  17  19

您唯一的選擇是修改源。 D3在整個軸實現中tickPadding假定tickPadding是一個數字,而不是一個函數-參見源代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM