D3.js 入門學習(二) V4的改動

来源:http://www.cnblogs.com/createGod/archive/2017/05/21/6886699.html
-Advertisement-
Play Games

//d3.scan /* 新的d3.scan方法對數組進行線性掃描,並根據指定的比較函數返回至少一個元素的索引。 這個方法有點類似於d3.min和d3.max。 而d3.scan可以得到極值的索引而不僅僅是計算極值。 */ var a1 = [1,3,5,2,9]; var i = d3.scan(... ...


//d3.scan
/*
 新的d3.scan方法對數組進行線性掃描,並根據指定的比較函數返回至少一個元素的索引。
 這個方法有點類似於d3.min和d3.max。
 而d3.scan可以得到極值的索引而不僅僅是計算極值。
 */
var a1 = [1,3,5,2,9];
var i = d3.scan(a1,function(a,b){
    return b-a;    // 返回最大值的索引,  a-b; 返回最小值的索引
});
console.log(i); //4;

//d3.ticks d3.ticks和d3.tickStep方法在生成刻度時是非常有用的。
// 可以代替生成d3-scale的continuous.ticks。  0-400之間取8個刻度
var ticks = d3.ticks(0,400,8);//[0, 50, 100, 150, 200, 250, 300, 350, 400]
console.log(ticks)

//d3.range d3.range方法,當step非整數時候不再對浮點進行校正,
// 而是嚴格返回start+i*step,其中i為整數。當範圍為無限大時返回空數組而不是報錯。
//3.x中
d3.range(0,1,0.3)   //[0, 0.3, 0.6, 0.9]
d3.range(Infinity)  //出錯
//4.0中
d3.range(0,1,0.3)   //[0, 0.3, 0.6, 0.8999999999999999]
d3.range(Infinity)  //[]

//d3.svg.axis;
//3.x中使用d3.svg.axis和axis.orient來定義坐標軸,
// 而4.0你可以直接使用d3.axisTop, d3.axisRight, d3.axisBottom,
// d3.axisLeft四種方法來生成軸。

var a2 = [];
for(var i = 0; i < 18; i++){
    a2[i] = (-1.4 + 0.2 * i).toFixed(1);
}
console.log(a2)
var body = d3.select('body');
var svg = body.append('svg').attr('width',1000).attr('height',400);

var linear = d3.scaleLinear().domain([-1.4,1.4]).range([200,800]);

var axis = d3.axisBottom(linear);

svg.append('g').call(axis);

//d3.svg.brush =>4.0提供了d3.brushX,d3.brushY和d3.brush來表示沿著x方向,
// y方向和兩個方向的3個子類。brushes不再依賴於比例尺而是定義了一個基於屏幕坐標的選擇集。
// 但是可以根據坐標和比例尺反轉來查詢對應的域中包含的數據。

//d3.set();
var yields = [
    {yield: 22.13333, variety: "Manchuria",        year: 1932, site: "Grand Rapids"},
    {yield: 26.76667, variety: "Peatland",         year: 1932, site: "Grand Rapids"},
    {yield: 28.10000, variety: "No. 462",          year: 1931, site: "Duluth"},
    {yield: 38.50000, variety: "Svansota",         year: 1932, site: "Waseca"},
    {yield: 40.46667, variety: "Svansota",         year: 1931, site: "Crookston"},
    {yield: 36.03333, variety: "Peatland",         year: 1932, site: "Waseca"},
    {yield: 34.46667, variety: "Wisconsin No. 38", year: 1931, site: "Grand Rapids"}
];

var sites = d3.set(yields, function(d) { return d.site; });
console.log(sites);//Grand Rapids, Duluth, Waseca, Crookston
//d3.color();
/*
 所有的顏色都可以使用color.opacity來設置透明度([0,1])。可以使用一個不含透明度參數的構造方法產生一個顏色,如d3.rgb,d3.hsl,d3.lab,d3.hcl或者d3.cubehelix。
 可以使用d3.color方法來將CSS顏色字元串轉為RGB或HSL顏色。它返回d3.color的實例或者null(如果字元串無效)
 var red = d3.color("hsl(0, 80%, 50%)"); // {h: 0, l: 0.5, s: 0.8, opacity: 1}
 4.0中顏色解析能力更強,d3.rgb,d3.hsl,d3.lab,d3.hcl和d3.cubehelix總是返回輸入顏色轉化為相應的顏色空間後的副本。使用color.rgb來替換掉rgb.hsl,來進行不同空間顏色轉化。
 */
//d3.drag


/*
 拖拽行為d3.behavior.drag被重命名為d3.drag。drag.origin由
 drag.subject替代用以定義拖拽的起始參考點。這在使用Canvas畫布時非常有用,
 因為拖拽對象共用一個Canvas元素(在SVG中拖拽的元素都是獨立的DOM元素),比如拖拽圓的例子
 */
/*
 在3.x中使用字元串來定義過渡類型,然後將這些字元串傳入d3.ease或transition.ease。
 在4.0中通過定義符號來設置過渡類型。比如d3.easeCubicInOut.。
 */
/*
 d3.layout.force被重命名為d3.forceSimulation。
 新的力導向模擬使用速度Verlet演算法而不是位置Verlet演算法,即追蹤節點的位置(node.x,node.y)
 和速度(node.vx,node.vy)而不是之前的位置(node.px,node.py)。
 */
/*
 d3.scale.linear -> d3.scaleLinear

 d3.scale.sqrt -> d3.scaleSqrt

 d3.scale.pow -> d3.scalePow

 d3.scale.log -> d3.scaleLog

 d3.scale.quantize -> d3.scaleQuantize

 d3.scale.threshold -> d3.scaleThreshold

 d3.scale.quantile -> d3.scaleQuantile

 d3.scale.identity -> d3.scaleIdentity

 d3.scale.ordinal -> d3.scaleOrdinal

 d3.time.scale -> d3.scaleTime

 d3.time.scale.utc -> d3.scaleUtc

 比例尺的刻度與輸入範圍的順序一致。比如有一個輸入範圍降序的比例尺,
 生成的刻度也是降序的。這個改變影響了由axes生成的刻度順序,比如:
 d3.scaleLinear().domain([10, 0]).ticks(5); // [10, 8, 6, 4, 2, 0]
 */

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.類的載入過程 JVM將類載入過程分為三個步驟:裝載(Load),鏈接(Link)和初始化(Initialize)鏈接又分為三個步驟,如下圖所示: 1) 裝載:查找並載入類的二進位數據; 2)鏈接: 驗證:確保被載入類的正確性; 準備:為類的靜態變數分配記憶體,並將其初始化為預設值; 解析:把類中的 ...
  • 三個月就這麼悄悄溜走了,本K對於前端雖然有了一定的認識,但對一些方面還是處於一種比較萌幣的狀態,就在這種萌幣狀態下,本K又跟著大神浩開始了後臺語言—PHP語言的學習。PHP的學習對於學過其他語言的人來說,是非常easy的(原因後續會提及),K在初次接觸的時候也就僅僅是對一些PHP的寫法有點膈應而已. ...
  • 時間複雜度上,紅黑樹在平均情況下插入,查找以及刪除上都達到了lgN的時間複雜度。 那麼有沒有查找效率更高的數據結構呢,答案就是本文接下來要介紹了散列表,也叫哈希表(Hash Table) 什麼是哈希表 哈希表就是一種以 鍵-值(key-indexed) 存儲數據的結構,我們只要輸入待查找的值即key ...
  • 設計模式一--單例設計模式 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 一、定義 Singleton Pattern: 確保一個類只有一個實例,並且自行實例化並向整個系統提供這個實例。 二、分類 餓漢式單例類:類載入時就進行對象的實例化 懶漢式單例類:第一次引用類時,才進行對象的實例化。 ...
  • ES6新語法於2015年發佈;而我這個前端小白在17年才接觸到。慚愧慚愧!!不過到目前為止,似乎只有FireFox和Chrome對ES6的支持相對良好。不過既然人家ES6已經出來了,還是要跟上技術的潮流。 ES6給我的感覺就是讓js越來越靠近傳統的編程語言,如java;比如裡面的面向對象的思想和語法 ...
  • 滑鼠事件是Web 開發中最常用的一類事件,畢竟滑鼠還是最主要的定位設備。DOM3 級事件中定義了9 個滑鼠事件,簡介如下。 click:在用戶單擊主滑鼠按鈕(一般是左邊的按鈕)或者按下回車鍵時觸發。這一點對確保易訪問性很重要,意味著onclick 事件處理程式既可以通過鍵盤也可以通過滑鼠執行。 db ...
  • 接下來幾個篇章,都會解讀 zepto 中的跟 相關的方法,也即源碼 對象中的方法。 讀Zepto源碼系列文章已經放到了github上,歡迎star: "reading zepto" 源碼版本 本文閱讀的源碼為 "zepto1.2.0" .forEach() 因為 zepto 的 集合是類數組,所以這 ...
  • 一、常用實體(字元轉義) '&lt;' == '<' '&copy;' == '©' '&gt;' == '>' '&quot;' == '"' '&nbsp;' == ' ' '&reg;' == '®' '&amp;&' == '&' '&t ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...