国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
繪制數(shù)據(jù)圖表的又一利器:C3.js前端觀察 | Javascript | 前端觀察

繪制數(shù)據(jù)圖表的又一利器:C3.js

很多人是數(shù)據(jù)控,其中又有很多人是圖標(biāo)控,看到一個(gè)個(gè)設(shè)計(jì)精美的圖標(biāo)在網(wǎng)頁上騰挪移動(dòng)不知戳到了多少人的高潮點(diǎn)。今天,我們就來總結(jié)幾個(gè)好用的Chart libraries并隆重推薦C3.js(如果你已經(jīng)想到D3的話,說明你懂的,么么噠)。對了,很多特殊目的的庫很多(例如專門做Sankey,專門做GeoInfo的),但今天我們主要講的C3則覆蓋大多數(shù)charts的庫。

這里是我使用過的幾個(gè),而今天會(huì)突出講D3 & C3:

  1. D3.js / C3.js
  2. Chart.js
  3. Google Chart Tools
  4. HighChart
  5. NVD3

D3.js

D3.js可以說是數(shù)據(jù)可視化做的最完整最復(fù)雜而展示效果也最引人入勝的一個(gè)庫,諸多的研究機(jī)構(gòu)、數(shù)據(jù)機(jī)構(gòu)及開發(fā)者都很鐘情于它。但是如果你真正地試用這個(gè)庫,你會(huì)發(fā)現(xiàn)它并不是一個(gè)很簡單的數(shù)據(jù)可視化工具,它更多地提供了一個(gè)數(shù)據(jù)化整理的結(jié)構(gòu)功能。另外,它并不是基于jQuery或其他的底層js libraries,它本身就帶有直接和DOM做交流的功能,因此一些教程說其基于a, b, c, …都是錯(cuò)誤的。更好地了解它的價(jià)值,你也可以閱讀我好友寫的一篇文章:What D3.js is Not。

D3.js是基于SVG的,因此老瀏覽器在支持上是要思密達(dá)的,具體情況請看caniuse

如果想要實(shí)現(xiàn)一個(gè)簡單的柱狀圖,可以通過數(shù)據(jù)直接生成DOM中的SVG元素,從而實(shí)現(xiàn)可視化的效果。因此,諸多D3.js樣式上的絢麗要?dú)w功于SVG本身的強(qiáng)大。

<pre lang="javascript" line="1"> 
 // dataset: an array of integers
 // svg: a <svg>...</svg>寬500, 高100 
 var svg = d3.select('#content').append('svg')
   .attr('width', 500) .attr('height', 100);
 // bars
 svg.selectAll('rect').data(dataset).enter().append('rect')
   .attr({
   x: function(d, i) {return i * (w / dataset.length);},
   y: function(d) {return h - d;},
   width: (w / dataset.length - barPadding),
   height: function(d) {return d;},
   fill: function(d) {return 'rgb(0,0,' + d * 3 + ')';}
 });
</pre>

這會(huì)生成一個(gè)簡單的柱狀圖:

  1. selectAll(‘rect’):要選中此svg中所有的長方體
  2. data(dataset):做binding
  3. enter():對每一個(gè)數(shù)據(jù)進(jìn)行操作
  4. append(‘rect’):根據(jù)每一個(gè)數(shù)據(jù)生成一個(gè)<rect>元素
  5. attr({…}):修改每一個(gè)長方體的樣式

這樣就能生成如下樣式:

C3.js

簡述了D3之后呢,我們就來看看C3是怎樣讓這個(gè)Charting的過程更加簡便的,對于上面這個(gè)柱狀圖,在C3中應(yīng)該如此實(shí)現(xiàn):

<pre lang="javascript" line="1"> 
var chart = c3.generate({
 data: {
   columns: [
     ['data1', 30, 200, 100, 400, 150, 250]
   ],
   type: 'bar'
 },
 bar: {
   width: {
     ratio: 0.5 // this makes bar width 50% of length between ticks
   }
 }
});
</pre>

這里在生成過程中可以自動(dòng)添加、減少數(shù)據(jù)分類同時(shí)提供諸多的data binding的動(dòng)畫效果。而與D3不同的是,這里的坐標(biāo)系、label等圖表相關(guān)元素會(huì)自動(dòng)添加,而D3則需要自己寫code來render。可以說,C3就是基于D3的一個(gè)真正的Charting library。

其他

其實(shí)Charting Tools還有很多,有看起來并不吸引人的傳統(tǒng)industry比較需要的版本,也有看上去很fancy的樣式。我用的最多的應(yīng)該就是NVD3和Chart.js(請叫我外貌協(xié)會(huì))。

  • NVD3同樣是基于D3.js的庫,它支持line chart, scatter, area chart, bar chart, pie chart和bullet,樣式上也同樣簡潔。但是這個(gè)庫可以說是D3和C3的中間層,它封裝了一部分D3底層數(shù)據(jù)操作從而提供了更簡單的圖標(biāo)生存interface,但是在實(shí)現(xiàn)圖標(biāo)上更多操作時(shí)其實(shí)還是在和D3直接交流,實(shí)現(xiàn)困難。
  • Chart.js則并不是基于SVG,而是基于Canvas的,因而在responsive, style control和interactions上比svg這樣直接和DOM操作更難。如果你感興趣也可以嘗試Paper.js。Chart.js支持line chat, bar chart, radar chart, polar area和pie。由于自己的程序需要,我曾經(jīng)閱讀了這個(gè)庫的source code,很多的碰撞實(shí)現(xiàn)還有數(shù)據(jù)變化后的動(dòng)畫效果都是可以編譯的,可惜現(xiàn)在的docs寫的并不developer friendly。(可以和我多聊這個(gè),我有興趣哦)

最后來解決一個(gè)很多人問過我的問題,Canvas和SVG到底有什么區(qū)別,該怎么用:(一表勝千言)

 

 

繪制數(shù)據(jù)圖表的又一利器:C3.js

很多人是數(shù)據(jù)控,其中又有很多人是圖標(biāo)控,看到一個(gè)個(gè)設(shè)計(jì)精美的圖標(biāo)在網(wǎng)頁上騰挪移動(dòng)不知戳到了多少人的高潮點(diǎn)。今天,我們就來總結(jié)幾個(gè)好用的Chart libraries并隆重推薦C3.js(如果你已經(jīng)想到D3的話,說明你懂的,么么噠)。對了,很多特殊目的的庫很多(例如專門做Sankey,專門做GeoInfo的),但今天我們主要講的C3則覆蓋大多數(shù)charts的庫。

這里是我使用過的幾個(gè),而今天會(huì)突出講D3 & C3:

  1. D3.js / C3.js
  2. Chart.js
  3. Google Chart Tools
  4. HighChart
  5. NVD3

D3.js

D3.js可以說是數(shù)據(jù)可視化做的最完整最復(fù)雜而展示效果也最引人入勝的一個(gè)庫,諸多的研究機(jī)構(gòu)、數(shù)據(jù)機(jī)構(gòu)及開發(fā)者都很鐘情于它。但是如果你真正地試用這個(gè)庫,你會(huì)發(fā)現(xiàn)它并不是一個(gè)很簡單的數(shù)據(jù)可視化工具,它更多地提供了一個(gè)數(shù)據(jù)化整理的結(jié)構(gòu)功能。另外,它并不是基于jQuery或其他的底層js libraries,它本身就帶有直接和DOM做交流的功能,因此一些教程說其基于a, b, c, …都是錯(cuò)誤的。更好地了解它的價(jià)值,你也可以閱讀我好友寫的一篇文章:What D3.js is Not。

D3.js是基于SVG的,因此老瀏覽器在支持上是要思密達(dá)的,具體情況請看caniuse

如果想要實(shí)現(xiàn)一個(gè)簡單的柱狀圖,可以通過數(shù)據(jù)直接生成DOM中的SVG元素,從而實(shí)現(xiàn)可視化的效果。因此,諸多D3.js樣式上的絢麗要?dú)w功于SVG本身的強(qiáng)大。

<pre lang="javascript" line="1"> 
 // dataset: an array of integers
 // svg: a <svg>...</svg>寬500, 高100 
 var svg = d3.select('#content').append('svg')
   .attr('width', 500) .attr('height', 100);
 // bars
 svg.selectAll('rect').data(dataset).enter().append('rect')
   .attr({
   x: function(d, i) {return i * (w / dataset.length);},
   y: function(d) {return h - d;},
   width: (w / dataset.length - barPadding),
   height: function(d) {return d;},
   fill: function(d) {return 'rgb(0,0,' + d * 3 + ')';}
 });
</pre>

這會(huì)生成一個(gè)簡單的柱狀圖:

  1. selectAll(‘rect’):要選中此svg中所有的長方體
  2. data(dataset):做binding
  3. enter():對每一個(gè)數(shù)據(jù)進(jìn)行操作
  4. append(‘rect’):根據(jù)每一個(gè)數(shù)據(jù)生成一個(gè)<rect>元素
  5. attr({…}):修改每一個(gè)長方體的樣式

這樣就能生成如下樣式:

C3.js

簡述了D3之后呢,我們就來看看C3是怎樣讓這個(gè)Charting的過程更加簡便的,對于上面這個(gè)柱狀圖,在C3中應(yīng)該如此實(shí)現(xiàn):

<pre lang="javascript" line="1"> 
var chart = c3.generate({
 data: {
   columns: [
     ['data1', 30, 200, 100, 400, 150, 250]
   ],
   type: 'bar'
 },
 bar: {
   width: {
     ratio: 0.5 // this makes bar width 50% of length between ticks
   }
 }
});
</pre>

這里在生成過程中可以自動(dòng)添加、減少數(shù)據(jù)分類同時(shí)提供諸多的data binding的動(dòng)畫效果。而與D3不同的是,這里的坐標(biāo)系、label等圖表相關(guān)元素會(huì)自動(dòng)添加,而D3則需要自己寫code來render??梢哉f,C3就是基于D3的一個(gè)真正的Charting library。

其他

其實(shí)Charting Tools還有很多,有看起來并不吸引人的傳統(tǒng)industry比較需要的版本,也有看上去很fancy的樣式。我用的最多的應(yīng)該就是NVD3和Chart.js(請叫我外貌協(xié)會(huì))。

  • NVD3同樣是基于D3.js的庫,它支持line chart, scatter, area chart, bar chart, pie chart和bullet,樣式上也同樣簡潔。但是這個(gè)庫可以說是D3和C3的中間層,它封裝了一部分D3底層數(shù)據(jù)操作從而提供了更簡單的圖標(biāo)生存interface,但是在實(shí)現(xiàn)圖標(biāo)上更多操作時(shí)其實(shí)還是在和D3直接交流,實(shí)現(xiàn)困難。
  • Chart.js則并不是基于SVG,而是基于Canvas的,因而在responsive, style control和interactions上比svg這樣直接和DOM操作更難。如果你感興趣也可以嘗試Paper.js。Chart.js支持line chat, bar chart, radar chart, polar area和pie。由于自己的程序需要,我曾經(jīng)閱讀了這個(gè)庫的source code,很多的碰撞實(shí)現(xiàn)還有數(shù)據(jù)變化后的動(dòng)畫效果都是可以編譯的,可惜現(xiàn)在的docs寫的并不developer friendly。(可以和我多聊這個(gè),我有興趣哦)

最后來解決一個(gè)很多人問過我的問題,Canvas和SVG到底有什么區(qū)別,該怎么用:(一表勝千言)

 

 

繪制數(shù)據(jù)圖表的又一利器:C3.js

很多人是數(shù)據(jù)控,其中又有很多人是圖標(biāo)控,看到一個(gè)個(gè)設(shè)計(jì)精美的圖標(biāo)在網(wǎng)頁上騰挪移動(dòng)不知戳到了多少人的高潮點(diǎn)。今天,我們就來總結(jié)幾個(gè)好用的Chart libraries并隆重推薦C3.js(如果你已經(jīng)想到D3的話,說明你懂的,么么噠)。對了,很多特殊目的的庫很多(例如專門做Sankey,專門做GeoInfo的),但今天我們主要講的C3則覆蓋大多數(shù)charts的庫。

這里是我使用過的幾個(gè),而今天會(huì)突出講D3 & C3:

  1. D3.js / C3.js
  2. Chart.js
  3. Google Chart Tools
  4. HighChart
  5. NVD3

D3.js

D3.js可以說是數(shù)據(jù)可視化做的最完整最復(fù)雜而展示效果也最引人入勝的一個(gè)庫,諸多的研究機(jī)構(gòu)、數(shù)據(jù)機(jī)構(gòu)及開發(fā)者都很鐘情于它。但是如果你真正地試用這個(gè)庫,你會(huì)發(fā)現(xiàn)它并不是一個(gè)很簡單的數(shù)據(jù)可視化工具,它更多地提供了一個(gè)數(shù)據(jù)化整理的結(jié)構(gòu)功能。另外,它并不是基于jQuery或其他的底層js libraries,它本身就帶有直接和DOM做交流的功能,因此一些教程說其基于a, b, c, …都是錯(cuò)誤的。更好地了解它的價(jià)值,你也可以閱讀我好友寫的一篇文章:What D3.js is Not。

D3.js是基于SVG的,因此老瀏覽器在支持上是要思密達(dá)的,具體情況請看caniuse

如果想要實(shí)現(xiàn)一個(gè)簡單的柱狀圖,可以通過數(shù)據(jù)直接生成DOM中的SVG元素,從而實(shí)現(xiàn)可視化的效果。因此,諸多D3.js樣式上的絢麗要?dú)w功于SVG本身的強(qiáng)大。

<pre lang="javascript" line="1"> 
 // dataset: an array of integers
 // svg: a <svg>...</svg>寬500, 高100 
 var svg = d3.select('#content').append('svg')
   .attr('width', 500) .attr('height', 100);
 // bars
 svg.selectAll('rect').data(dataset).enter().append('rect')
   .attr({
   x: function(d, i) {return i * (w / dataset.length);},
   y: function(d) {return h - d;},
   width: (w / dataset.length - barPadding),
   height: function(d) {return d;},
   fill: function(d) {return 'rgb(0,0,' + d * 3 + ')';}
 });
</pre>

這會(huì)生成一個(gè)簡單的柱狀圖:

  1. selectAll(‘rect’):要選中此svg中所有的長方體
  2. data(dataset):做binding
  3. enter():對每一個(gè)數(shù)據(jù)進(jìn)行操作
  4. append(‘rect’):根據(jù)每一個(gè)數(shù)據(jù)生成一個(gè)<rect>元素
  5. attr({…}):修改每一個(gè)長方體的樣式

這樣就能生成如下樣式:

C3.js

簡述了D3之后呢,我們就來看看C3是怎樣讓這個(gè)Charting的過程更加簡便的,對于上面這個(gè)柱狀圖,在C3中應(yīng)該如此實(shí)現(xiàn):

<pre lang="javascript" line="1"> 
var chart = c3.generate({
 data: {
   columns: [
     ['data1', 30, 200, 100, 400, 150, 250]
   ],
   type: 'bar'
 },
 bar: {
   width: {
     ratio: 0.5 // this makes bar width 50% of length between ticks
   }
 }
});
</pre>

這里在生成過程中可以自動(dòng)添加、減少數(shù)據(jù)分類同時(shí)提供諸多的data binding的動(dòng)畫效果。而與D3不同的是,這里的坐標(biāo)系、label等圖表相關(guān)元素會(huì)自動(dòng)添加,而D3則需要自己寫code來render??梢哉f,C3就是基于D3的一個(gè)真正的Charting library。

其他

其實(shí)Charting Tools還有很多,有看起來并不吸引人的傳統(tǒng)industry比較需要的版本,也有看上去很fancy的樣式。我用的最多的應(yīng)該就是NVD3和Chart.js(請叫我外貌協(xié)會(huì))。

  • NVD3同樣是基于D3.js的庫,它支持line chart, scatter, area chart, bar chart, pie chart和bullet,樣式上也同樣簡潔。但是這個(gè)庫可以說是D3和C3的中間層,它封裝了一部分D3底層數(shù)據(jù)操作從而提供了更簡單的圖標(biāo)生存interface,但是在實(shí)現(xiàn)圖標(biāo)上更多操作時(shí)其實(shí)還是在和D3直接交流,實(shí)現(xiàn)困難。
  • Chart.js則并不是基于SVG,而是基于Canvas的,因而在responsive, style control和interactions上比svg這樣直接和DOM操作更難。如果你感興趣也可以嘗試Paper.js。Chart.js支持line chat, bar chart, radar chart, polar area和pie。由于自己的程序需要,我曾經(jīng)閱讀了這個(gè)庫的source code,很多的碰撞實(shí)現(xiàn)還有數(shù)據(jù)變化后的動(dòng)畫效果都是可以編譯的,可惜現(xiàn)在的docs寫的并不developer friendly。(可以和我多聊這個(gè),我有興趣哦)

最后來解決一個(gè)很多人問過我的問題,Canvas和SVG到底有什么區(qū)別,該怎么用:(一表勝千言)

 

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
D3.js實(shí)現(xiàn)餅狀圖的方法詳解
svg繪圖工具raphael.js的使用
一共56個(gè),盤點(diǎn)最實(shí)用的大數(shù)據(jù)可視化分析工具 | 36大數(shù)據(jù)
盤點(diǎn):55個(gè)最實(shí)用大數(shù)據(jù)可視化分析工具
玩轉(zhuǎn)大數(shù)據(jù)可視化的幾個(gè)必會(huì)工具,你認(rèn)識(shí)幾個(gè)?
可視化工具D3.js教程 入門 (第十三章)—— 樹狀圖
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服