D3是一個基於數據操作的可視化js庫,認識d3,就從最基礎的顯示可加載數據談起。
html的基本框架不多說,先上代碼再解釋:
新建一個test目錄,在該目錄下創建demo和d3兩個文件夾。demo存放要編寫的html文件 , d3存放d3.v3.js
在demo文件夾下新建indexP.html,將下面代碼復制其中,雙擊在浏覽器打開查看效果。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>D3: Setting paragraphs' style conditionally, based on data</title> <script type="text/javascript" src="../d3/d3.v3.js"></script> </head> <body> <script type="text/javascript"> var dataset = [ 5, 10, 15, 20, 25 ]; d3.select("body").selectAll("p") .data(dataset) .enter() .append("p") .text(function(d) { return "I can count up to " + d; }) .style("color", function(d) { if (d > 15) { //Threshold of 15 return "red"; } else { return "black"; } }); </script> </body> </html>
這個簡單demo實現的功能:在body中添加p標簽,在p標簽中添加d3加載的文本內容,並根據函數設置條件對文字顏色進行調整。
上面的網頁代碼,body裡面的js代碼,是展現到頁面的數據操作。以後的不少例子,只要修改這一塊便可,其他部分可看做頁面框架。
這裡的內容上篇文章大體都講到了,使用d3的連綴,將同一對象的一步步數據操作連接起來,便於維護。
d3.select("body") 選擇body元素,並連綴到下一方法
.selectAll("p") 選中所有段落
.data(dataset) 解析加載數組數據,該數組長度是5, 以後連綴的每個方法都將執行五次,按數組下標依次針對數組元素執行方法操作
.enter() 創建新的綁定數據的占位元素(相當於創建暫時不知名標簽5個)。
創建的個數 要根據選擇的已有標簽數和加載的數據數組長度決定。
如本例,如果body中p標簽少於5個,就創建(現在body中p為0個,故創建5個),
多於就不創建,最後的占位元素和p元素總個數要為5。
.append("p") 將占位元素改為p元素
.text(function(d) {}) 對每個段落的顯示內容,寫個匿名函數控制,一般返回字符串。在該方法你可以 任意編寫,
本例讓他每段落輸出I can count up to 加上相應數組元素值
函數格式是固定的,function(d)只有這樣,才能將數據加載到函數中。
.style("color","") 設置css的文本顏色屬性,同text一樣,設置的字符串都可以用function進行你想要的操作。本例中,如果該段落所對應的傳入數值大於15,就把該行變紅
最後,我們看到的效果就是如圖:
本文就介紹到這裡,下文介紹如何在SVG中繪制圓,以及圓圓相連的簡單用力圖