初識D3.js

現(xiàn)在是數(shù)據(jù)時代缔莲,越來越多的人認(rèn)識到數(shù)據(jù)的重要性哥纫,但是海量的數(shù)據(jù)并不能展現(xiàn)出它的價值,只有將數(shù)據(jù)分析痴奏、總結(jié)蛀骇,才能夠展現(xiàn)它的價值厌秒。所以有了數(shù)據(jù)分析和數(shù)據(jù)可視化。(個人小見解[?_?])

數(shù)據(jù)可視化有很多框架和庫擅憔,看流行趨勢和個人喜好鸵闪。我學(xué)習(xí)的是D3.js。不多說了暑诸,進(jìn)入正題......

1. 配置環(huán)境

進(jìn)入官網(wǎng)蚌讼,直接下載d3的壓縮包,里面含有d3.js个榕,直接引入即可篡石。也可以直接使用聯(lián)網(wǎng)的引用,如下所示:

<script src="https://d3js.org/d3.v5.min.js"></script>

還可以使用node.js作為后臺西采,使用npm安裝d3的庫凰萨。具體實現(xiàn)方法自行百度即可。

2. D3.js之Hello World

Hello World 這句話可是編程界的基石械馆,當(dāng)之無愧的老大沟蔑。實現(xiàn)這一步,你就離從入門到“放棄”不遠(yuǎn)了狱杰,不扯了。厅须。仿畸。。

<html> 
  <head> 
        <meta charset="utf-8"> 
        <title>HelloWorld</title> 
      <script src="https://d3js.org/d3.v5.min.js"></script>
  </head> 
    <body> 
        <p></p>
    </body> 
    <script>  
          var body = d3.select("body");
          body.select("p).text("Hello World!")
    </script> 
</html>

3. D3.js的增朗和、刪错沽、查和數(shù)據(jù)綁定

    1. D3的兩種查找
      d3有兩種查找方法:select和selectAll
       <p class="p1">Hello World 1</p>
       <p class="p1">Hello World 2</p>
       <p id="p2">Hello World 3</p>
    
       //select查找一個,selectAll查找得到一個列表
       //查找可以通過HTML標(biāo)簽眶拉,id和class
       var p1=body.select("#p2")
       var p1_1=body.selectAll(".p1")
    
    1. D3的數(shù)據(jù)綁定
      d3有兩種數(shù)據(jù)方法data和datum
        var p=d3.select("body").selectAll("p");
        //為每一個P標(biāo)簽添加相同的字符"你好"
        var datas='你好';
        p.datum(datas).text(function (d,i) {
            return "第"+i+"個元素"+d;
        })
        
        //將列表每一個分別與P標(biāo)簽綁定
        var dataset=[1,3,5]
        p.data(dataset)
        .text(function (d,i) {
            return "第"+i+"個元素"+d;
        })
        //function(d,i)是d3的鏈?zhǔn)秸Z法千埃,經(jīng)常用到,d代表數(shù)據(jù)忆植,i是數(shù)據(jù)的index編號放可。
        //通過 d 和 i 判定,為不同的數(shù)據(jù)顯示不同的文字顏色
        .style("color",function (d,i) {
         if (d>3) {
              return "red"
         }
         if (i==0) {
              return "yellow"
         }
         })
         //.text()是文本朝刊,.style()是設(shè)置css樣式
    
    1. D3的插入和刪除
      前面講了d3的查找耀里,必然就有添加和刪除了
      添加有兩種append()和insert(),前一個是末尾添加拾氓,后一個是在之前添加冯挎;remove()是刪除。
        //在body里插入標(biāo)簽咙鞍,insert需要指定放在誰的前面房官,否則排在最后趾徽。
        var body = d3.select("body");
        body.append("p").text("append");
        body.insert("p","#p2").text("insert");
        //刪除
        body.select("#p").remove()
    
    1. D3的update、enter翰守、exit使用
      在使用D3的data將數(shù)據(jù)和元素綁定時孵奶,會有三種情況:
      (1)數(shù)據(jù)數(shù)量 = 元素數(shù)量 此時就是update
      (2)數(shù)據(jù)數(shù)量 > 元素數(shù)量 此時就是enter
      (3)數(shù)據(jù)數(shù)量 < 元素數(shù)量 此時就是exit
      1). update和enter
        var dataset2=[1,3,5,7,9]
        //enter方法1 分步驟綁定數(shù)據(jù)
        var update=p.data(dataset2);
        //先得到多余的數(shù)據(jù)量
        var enter=update.enter();
        //將update數(shù)據(jù)顯示
        update.text(function (d,i) {
              return "update:"+d+",index:"+i;
        })
        //將p標(biāo)簽補(bǔ)全數(shù)量
        var Enter=enter.append("p");
        Enter.text(function (d,i) {
              return "enter:"+d+",index:"+i;
        })
    
        //enter方法2 直接簡便書寫綁定數(shù)據(jù)
        p.data(dataset2)
        .enter()
        .append("p")
        .text(function (d,i) {
              return "enter2:"+d+",index:"+i;
         })
    
    2). update和exit
        var dataset3=[1,3]
        // exit方法一
        var update=p.data(dataset3);
        //得到多余的數(shù)據(jù)量
        var exit=update.exit();
        //先將update數(shù)據(jù)顯示
        update.text(function (d,i) {
             return "update:"+d+",index:"+i;
        })
        //刪除多余的p標(biāo)簽,應(yīng)該直接刪除潦俺,這里為了顯示差別    
        exit.text(function (d,i) {
             return "exit"
        })
        // exit.remove()  //直接刪除
    
        // exit方法2
        p.data(dataset3)
        .text(function (d,i) {
             return "exit2:"+d+",index:"+i;
        })
        .exit()
        .remove()
    
    一般情況是使用update和enter拒课,畢竟數(shù)據(jù)量一般是巨大的,很少有足夠數(shù)量的與之對應(yīng)的元素事示。所以要熟練 enter 的使用方法早像。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肖爵,隨后出現(xiàn)的幾起案子卢鹦,更是在濱河造成了極大的恐慌,老刑警劉巖劝堪,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冀自,死亡現(xiàn)場離奇詭異,居然都是意外死亡秒啦,警方通過查閱死者的電腦和手機(jī)熬粗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來余境,“玉大人驻呐,你說我怎么就攤上這事》祭矗” “怎么了含末?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長即舌。 經(jīng)常有香客問我佣盒,道長,這世上最難降的妖魔是什么顽聂? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任肥惭,我火速辦了婚禮,結(jié)果婚禮上紊搪,老公的妹妹穿的比我還像新娘务豺。我一直安慰自己,他們只是感情好嗦明,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布笼沥。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奔浅。 梳的紋絲不亂的頭發(fā)上馆纳,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音汹桦,去河邊找鬼鲁驶。 笑死,一個胖子當(dāng)著我的面吹牛舞骆,可吹牛的內(nèi)容都是我干的钥弯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼督禽,長吁一口氣:“原來是場噩夢啊……” “哼脆霎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起狈惫,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤睛蛛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胧谈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忆肾,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年菱肖,在試婚紗的時候發(fā)現(xiàn)自己被綠了客冈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡稳强,死狀恐怖郊酒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情键袱,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布摹闽,位于F島的核電站蹄咖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏付鹿。R本人自食惡果不足惜澜汤,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舵匾。 院中可真熱鬧俊抵,春花似錦、人聲如沸坐梯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谎替,卻和暖如春偷溺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钱贯。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工挫掏, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秩命。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓尉共,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弃锐。 傳聞我的和親對象是個殘疾皇子袄友,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容