国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

D3的一點理解

ideaa / 1445人閱讀

摘要:的一點理解用其官網的話來說是一個用于數據可視化的庫。其將數據與綁定,通過建立數據與元素樣式之間的關系,來表現數據,實現可視化。它也是上星第多的庫。

D3的一點理解 D3

用其官網的話來說:

D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG, and CSS.

D3是一個用于數據可視化的JS庫。其將數據與DOM綁定,通過建立數據與DOM元素樣式之間的關系,來表現數據,實現可視化。它也是github上星第4多的JS庫。

不用工具繪制一個柱狀圖

成果圖如下

代碼如下


  ...
  
  
整理思路如下

選擇畫布

let chart = document.getElementsByClassName("chart")[0]

創建元素,通過元素的樣式來表現數據

let div = document.createElement("div")
div.style.width = `$yuyewimpx`
div.textContent = d

將元素添加到畫布上

chart.appendChild(div)

用D3繪制一個柱狀圖

整個思路中,首先要注意數據與元素數量之間的關系

有多少組數據,就應該對應有多少個元素

其次就是建立數據與元素樣式之間的函數關系

例如數據與元素寬度之間的函數關系

function (data) {
  return data + "px";
}

數據與元素文本內容之間的函數關系

function (data) {
  return data;
}

我個人覺得,d3的 Data-Driven Documents,主要體現就是以上兩點

用d3實現同樣效果如下


  
理解數據與元素數量之間的關系

數據

let data = [30, 86, 168, 281, 303, 365]
本身就有對應數量的元素

如果在 .chart 中有對應數量的 div

那么就不需要額外添加 div 元素

d3.select(".chart")
      .selectAll("div")
      .data(data)
      .style("width", function (d) {
        return d + "px";
      })
      .text(function (d) {
        return d;
      });
本身就沒有元素

如果沒有 div 元素,就需要通過 enter().append("div") 來添加相應數量的元素

其中 enter()

Returns the enter selection: placeholder nodes for each datum that had no corresponding DOM element in the selection. (The enter selection is empty for selections not returned by selection.data.)
d3.select(".chart")
      .selectAll("div")
      .data(data)
      .enter().append("div")
      .style("width", function (d) {
        return d + "px";
      })
      .text(function (d) {
        return d;
      })
本身有過多數量的元素

如果在 .chart 中有過多數量的 div

那么就需要將多余的 div 移除,通過 exit().remove() 來實現

其中 exit()

Returns the exit selection: existing DOM elements in the selection for which no new datum was found. (The exit selection is empty for selections not returned by selection.data.)
d3.select(".chart")
      .selectAll("div")
      .data(data)
      .style("width", function (d) {
        return d + "px";
      })
      .text(function (d) {
        return d;
      })
      .exit().remove()
更新數據與元素數量之間的關系

首先要知道在 d3 中,數據與 DOM 元素并不是雙向綁定的,在將數據綁定到元素之后,再次修改數據,元素并不會產生對應的變化

所以數據更新要手動完成

function update(data) {
      d3.select(".chart")
        .selectAll("div")
        .data(data)
        .style("width", function (d) {
          return d + "px";
        })
        .text(function (d) {
          return d;
        })
     // 如果元素不夠,補足
      d3.select(".chart")
        .selectAll("div")
        .data(data)
        .enter().append("div")
        .style("width", function (d) {
          return d + "px";
        })
        .text(function (d) {
          return d;
        })
    // 如果元素多余,移除
      d3.select(".chart")
        .selectAll("div")
        .data(data)
        .exit().remove()
    }

完整實驗代碼





  
  
  
  D3.js
  



  
小結

d3提供的選擇方法,能處理數據與元素數量不匹配的情況

當元素數量不夠時,通過enter()能選擇到那些用于補足的元素

當元素數量過多時,通過exit()能選擇那些過剩的元素

d3方便了通過元素的樣式來展現數據的過程,用戶自己定義數據與元素樣式之間的函數關系

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/90481.html

相關文章

  • d3.js 創建完整柱形圖

    摘要:之前只是各個部分的,現在將各部分整合起來,發現還是學到了不少東西主要是加深了對比例尺的理解代碼樣式及數據樣式接著是數據及柱狀圖寬高等留白用創建比例尺實踐之后對比例尺與坐標軸的理解加深了一點軸使用線性比例尺,注意輸入域軸使用比例尺用于柱形 d3js.org v5.9.2 之前只是各個部分的demo,現在將各部分整合起來,發現還是學到了不少東西 主要是加深了對scale(比例尺)的理解...

    snowLu 評論0 收藏0
  • D3 源代碼解析(二)

    摘要:第一節點位于第二節點內。例如,返回意味著在在內部,并且在之前。這個函數返回一個函數,返回的函數綁定了當前對象并執行。 這是繼上一篇D3源碼解構文章后的對D3的研究筆記,筆者的能力有限,如有哪里理解錯誤,歡迎指正。 對集合的操作 關于d3.attr 一個可以處理很多情況的函數,當只傳入一個參數時,如果是string,則返回該屬性值,如果是對象,則遍歷設置對象的鍵值對屬性值,如果參數大于等...

    tainzhi 評論0 收藏0
  • 聲明式與響應式——前端新一代數據可視化方案

    摘要:數據可視化圖表圖表作為數據可視化最常見的表現形式之一,往往被以偏概全的認為圖表就是數據可視化。嚴格來說,數據可視化應該是連接數據與視覺的一個映射關系,將數據映射成人更容易感知其規律的可視化結果。 題目中的新一代是個相對的概念,事實上本文即將介紹的方法已經有了生產環境可用的實現方案(這也側面佐證了其可行性),但考慮到此方法與現在大部分前端項目中所使用的數據可視化方案相比仍有一些優勢,因此...

    xuhong 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<