D3.js學習(六)


上節我們學習了如何繪制多條曲線, 以及給不同的曲線指定不同的坐標系。在這節當中,我們會對坐標軸標簽相關的處理進行學習。首先,我們來想一個問題, 如何我們的x軸上的各個標簽的距離比較近,但是標簽名又比較長怎么辦? 像是下面這種情況該如何處理?
image

上圖中x軸上的標簽是不是都重疊在一起了?非常惡心對不對?所以,我們得想個辦法在不改變ticks標簽直接的距離的情況下,讓他們達到很好的閱讀效果。

讓ticks標簽旋轉一定的角度

下面我們的目標就是實現這一種效果:
image
為了達到這個目標我們首先得做一個准備工作:  因為我們的ticks標簽變高了,所以,為了容納這些標簽內容,我們給他提供更多的空間:

var margin = {top:30, right:40, bottom: 50, left: 50};


我想50個像素夠它用了,下面我們再來處理所有的ticks標簽:

//繪制x坐標軸
    svg.append("g")
      .attr("class", "x axis")
      .attr("transform", "translate(0," + height + ")")
      .call(xAxis)
      .selectAll("text")
        .style("text-anchor", "end")
        .attr("dx", "-.8em")
        .attr("dy", ".15em")
        .attr("transform", "rotate(-65)");

好吧,就是這么簡單,上面的屬性在我們前面的學習中都已經用到過,也解釋過各個屬性的作用,這里就不展開說明了,不懂的同學自覺回顧一下前面的知識微笑。  當然了,實現這種效果肯定不僅僅只有這樣一種方法,如果你有什么好的方法,希望你可以在評論中回復,Thx!

 

 

自定義ticks標簽內容

我們知道,d3如此之強大,強大到坐標軸的ticks內容的格式他都給我們自己設置好了。但是,有時候我們想要自己的格式,怎么辦呢?  No problem, D3 has your back(不知道什么意思的同學自覺Google  微笑 )!!

其實這個太簡單了,比較棘手的問題是我們要覺得使用什么樣的格式。在這之前,我們先再次擴充圖表底部的容量,以保證我們后面設置的格式能夠容納下來,好吧,先來70像素。

var margin = {top:30, right:40, bottom: 70, left: 50};

下一步,定義我們的格式:

//定義坐標軸
  var xAxis = d3.svg.axis().scale(x).orient("bottom").ticks(10)
         .tickFormat(d3.time.format("%Y-%m-%d"));

就是這么簡單!這里我設置了“年-月-日”這樣的格式,當然,如果你覺得這種格式你讓你不爽,你可以設置任何 其他的格式。現在我們的效果如下:
image
 
 
好吧,本節知識點就這些,如果有什么問題希望你猛擊“評論”給我留言,我將竭盡所能給你解答。下一節,我們將給我們的圖表加入動畫效果!
 
 
 
感謝您的關注: http://weibo.com/u/1914017207 (專注前端,熱愛分享)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM