D3.js 從P元素的建立開始(顯示可載入資料),d3.js

來源:互聯網
上載者:User

D3.js 從P元素的建立開始(顯示可載入資料),d3.js

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中繪製圓,以及圓圓相連的簡單用力圖


使用js建立元素不可以顯示的問題

<script type="text/javascript">
window.onload=function(){
var board = document.getElementById("board");
var e = document.createElement("input");
e.type = "button";
e.value = "這是測試載入的小例子";
var object = board.appendChild(e);
}
</script>

因為 var board = document.getElementById("board"); 需要用到代碼下面的board
而你的代碼執行時,下面的board還未載入,故報錯
加上window.onload應該就好了
 
d3js資料視覺效果架構支援中文顯示?

肯定支援。google "d3js 支援中文",看第一頁alloyteam那篇“d3.js實現線形圖”,座標軸文字說明是中文的,有圖為證。
一般應該用utf-8格式,注意meta標籤和檔案儲存體格式都要utf-8的。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.