當前位置:外匯行情大全網 - 期貨行情 - 如何用d3.js制作可視化表格

如何用d3.js制作可視化表格

D3是目前最流行的JavaScript可視化圖表庫之壹。D3的圖表類型非常豐富,支持SVG格式,因此應用廣泛。還有很多基於D3開發的圖表插件,比如MetricsGraphics.js,基於D3構建的數據圖表非常強大。

D3的特征

允許將任意數據綁定到DOM,並將數據驅動轉換應用到文檔。

不僅可以創建漂亮的HTML表格,還可以繪制折線圖、柱形圖、餅圖等數據圖表。

支持SVG,在網頁上渲染無壓力。

回到頂端

如何使用D3

D3的具體用法請參考D3圖形庫API中的這篇文章。本文主要介紹壹些經典圖表的實現效果和代碼。

Index.html電碼:

& lt!DOCTYPE?html & gt

& ltmeta?charset="utf-8 " >

& ltstyle & gt

svg?{

字體:?10px?無襯線字體;

}

. y軸?路徑?{

顯示:?無;

}

. y軸?線?{

筆畫:?# fff

筆畫不透明度:?.2;

形狀渲染:?卷曲邊緣;

}

. y軸?。零?線?{

筆畫:?#000;

筆畫不透明度:?1;

}

。標題?{

字體:?300?78px?Helvetica?Neue

填充:?#666;

}

。出生年份,

。年齡?{

文本錨:?中間;

}

。出生年份?{

填充:?# fff

}

rect?{

填充-不透明度:?.6;

填充:?# e377c2

}

rect:第壹胎?{

填充:?# 1f77b 4;

}

& lt/style & gt;

& ltbody & gt

& lt劇本?src = " http://d3js . org/D3 . v3 . min . js " & gt;& lt/script & gt;

& lt腳本& gt

var?保證金?=?{top:?20,?對不對:?40,?底部:?30,?左:?20},

寬度?=?960?-?邊距。左邊?-?邊緣。對,

身高?=?500?-?margin.top?-?頁邊距。底部,

酒吧寬度?=?Math.floor(寬度?/?19)?-?1;

var?x?=?d3.scale.linear()

。範圍([barWidth?/?2,?寬度?-?酒吧寬度?/?2]);

var?y?=?d3.scale.linear()

。範圍(【身高,0]);

var?亞克西斯?=?d3.svg.axis()

。刻度(y)

。東方(“右”)

。tickSize(-寬度)

。tickFormat(函數(d)?{?回歸?Math.round(d?/?1e6)?+?”M”;?});

//?安?SVG?元素?用什麽?答?右下方?起源。

var?svg?=?d3.select("body ")。追加(" svg ")

。attr("width ",寬度?+?邊距。左邊?+?右邊距)

。attr("高度",身高?+?margin.top?+?邊距.底部)

。附加(" g ")

。attr("transform ",“翻譯(?+?邊距。左邊?+?","?+?margin.top?+?")");

//?答?滑動?集裝箱?去哪?保持?那個?酒吧?被誰?出生年份。

var?出生年份?=?svg.append("g ")

。attr("class ",“出生年份”);

//?答?標簽?為了什麽?那個?當前?年份。

var?標題?=?svg.append("text ")

。attr("class ",“標題”)

。attr("dy ",. 71em ")

。正文(2000年);

d3.csv("population.csv ",函數(誤差,?數據)?{

//?皈依?弦樂?去哪?數字。

data.forEach(函數(d)?{

d .人?=?+d .人;

公元年?=?+d . year;

d .年齡?=?+d .年齡;

});

//?計算?那個?程度?的?那個?數據?設置?在?年齡?然後呢。幾年。

var?年齡1?=?d3.max(數據,?功能(d)?{?回歸?d .年齡;?}),

year0?=?d3.min(數據,?功能(d)?{?回歸?d .年份;?}),

year1?=?d3.max(數據,?功能(d)?{?回歸?d .年份;?}),

年份?=?year 1;

//?更新?那個?尺度?域。

x.domain([year1?-?年齡1,?year 1]);

y.domain([0,d3.max(數據,?功能(d)?{?回歸?d .人;?})]);

//?生產?答?地圖?從哪裏?年份?然後呢。出生年份?去哪?【男,?女】。

數據?=?d3.nest()

。鍵(功能(d)?{?回歸?d .年份;?})

。鍵(功能(d)?{?回歸?公元年?-?d .年齡;?})

。rollup(函數(v)?{?回歸?v.map(函數(d)?{?回歸?d .人;?});?})

。地圖(數據);

//?補充?安?軸?去哪?秀?那個?人口?價值觀。

svg.append("g ")

。attr("class ",“y?軸”)

。attr("transform ",“翻譯(?+?寬度?+?",0)")

。呼叫(yAxis)

。選擇全部(“g”)

。過濾器(函數(值)?{?回歸?!價值;?})

。分類("零",真);

//?補充?貼標簽?rects?為了什麽?每個?出生年份?(所以呢?那個?沒有嗎?進入?還是?退出?是嗎?必選)。

var?出生年份?=?birthyears.selectAll("。出生年份”)

。數據(d3.range(year0?-?年齡1,?year1?+?1,?5))

。輸入()。附加(" g ")

。attr("class ",“出生年份”)

。attr("transform ",函數(出生年份)?{?回歸?“翻譯(?+?x(出生年份)?+?",0)";?});

birthyear.selectAll("rect ")

。數據(函數(出生年份)?{?回歸?數據[年份][出生年份]?||?[0,?0];?})

。輸入()。追加(" rect ")

。attr("x ",-酒吧寬度?/?2)

。attr("width ",條寬)

。attr("y ",y)

。attr("高度",功能(價值)?{?回歸?身高?-?y(值);?});

//?補充?標簽?去哪?秀?出生年份。

birthyear.append("text ")

。attr("y ",身高?-?4)

。文本(函數(出生年份)?{?回歸?出生年份;?});

//?補充?標簽?去哪?秀?年齡?(分開;?不是嗎?動畫)。

svg.selectAll("。年齡”)

。數據(d3.range(0,年齡1?+?1,?5))

。輸入()。追加(“文本”)

。attr("class ",“年齡”)

。attr("x ",功能(年齡)?{?回歸?x(年份?-?年齡);?})

。attr("y ",身高?+?4)

。attr("dy ",. 71em ")

。文字(功能(年齡)?{?回歸?年齡;?});

//?允許嗎?那個?箭頭?鑰匙?去哪?改變?那個?顯示?年份。

window . focus();

d3 .選擇(窗口)。on("keydown ",函數()?{

切換?(d3.event.keyCode)?{

案子?37:?年份?=?Math.max(year0,年份?-?10);?打破;

案子?39:?年份?=?Math.min(year1,?年份?+?10);?打破;

}

update();

});

功能?update()?{

如果?(!(年份?在?數據))?返回;

title.text(年份);

birthyears.transition()

。持續時間(750)

。attr("transform ",“翻譯(?+?(x(year1)?-?x(年))?+?",0)");

birthyear.selectAll("rect ")

。數據(函數(出生年份)?{?回歸?數據[年份][出生年份]?||?[0,?0];?})

。過渡()

。持續時間(750)

。attr("y ",y)

。attr("高度",功能(價值)?{?回歸?身高?-?y(值);?});

}

});

  • 上一篇:如何購買期貨?
  • 下一篇:三門峽職業技術學院單招多少分?
  • copyright 2024外匯行情大全網