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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...