
D3.js ïŒãŸãã¯åã«D3ïŒã¯ãä¿¡ããããªãã»ã©å·šå€§ãªæ©èœã§ããŒã¿ãåŠçããã³èŠèŠåããããã®JavaScriptã©ã€ãã©ãªã§ãã æåã«ãããç¥ã£ããšããããããD3ã§äœæãããããŒã¿ã®èŠèŠåã®äŸãèŠãŠãå°ãªããšã2æéãè²»ãããŸããã ãããŠãã¡ãããç§èªèº«ãäŒæ¥ã®å°ããªå
éšãµã€ãã®ã°ã©ããäœæããå¿
èŠããã£ããšããD3ã«ã€ããŠæåã«æãåºãããä»ã§ã¯èª°ããæãã¯ãŒã«ãªèŠèŠåã§é©ããŸãããšããèãã§ãäŸã®ãœãŒã¹ã³ãŒããç 究ããããšã«çæããŸãã...
...ãããŠãç§èªèº«ã¯çµ¶å¯Ÿã«äœãç解ããŠããªãããšã«æ°ä»ããŸããïŒ ã©ã€ãã©ãªã®å¥åŠãªããžãã¯ãäŸã§ã¯ãæãåçŽãªã¹ã±ãžã¥ãŒã«ãäœæããããã®ã³ãŒãè¡å
šäœ-ãã¡ãããããã¯äž»ã«èªãã«æºã¡ãææã§ããã ããŠã錻氎ãæããŸãã-D3ãç°¡åã«æ®ãããšãã§ããããã®ã©ã€ãã©ãªãç解ããã«ã¯ããã®åºç€ããå§ããå¿
èŠãããããšã«æ°ä»ããŸããã ãããã£ãŠãç§ã¯å¥ã®æ¹æ³ã§è¡ãããšã決ããŸãã-ç§ã®ã¹ã±ãžã¥ãŒã«ã®åºç€ãšããŠã©ã€ãã©ãªã®1ã€ãæ¡çšããããã«-D3ã®ã¢ããªã³ã å€æããããã«ããã®ãããªã©ã€ãã©ãªããããããããŸã-ããã¯ãç§ãç解ããŠããªãå¯äžã®äººã§ã¯ãªãããšãæå³ããŸãïŒç°ããã®ç§ã®èªãã¯èšã£ãïŒã
ããã€ãã®ã©ã€ãã©ãªãè©ŠããåŸãç§ã¯èªåã®ããŒãºã«å€ããå°ãªããé©åãªãã£ã³ãã«ã«èœã¡çãã ããã§ãã¹ãŠã®ã¹ã±ãžã¥ãŒã«ãåæ§ç¯ããŸããããããã§ãäžæºããããŸããã ããã€ãã®ããšã¯æãéãã«æ©èœããŸããã§ããããã£ã³ãã«ãæ·±ãæããªãä»ã®æ©èœã¯å®è£
ã§ããã延æãããŸããã ãšã«ãããæ·±ãæãäžããå¿
èŠãããå Žåã¯ãè¿œå ã®èšå®ã§ã¯ãªããD3ã§çŽæ¥è¡ãæ¹ãè¯ãã§ããããç§ã®å Žåããã®è±å¯ãªæ©èœã¯5ã10ïŒ
ãã䜿çšãããŸããããå¿
èŠãªèšå®ã¯éã§ãã ãããŠãäœãèµ·ãã£ãã®ãããããD3.jsã§ãã
è©Šè¡çªå·2
ãŸãã Habré㮠D3ã«ãããã¹ãŠã®ãã®ãèªã¿çŽããŸãã ãŸããèšäºã®1ã€ã«ãã解説ã§ã¯ã ãWebçšã®å¯Ÿè©±åããŒã¿èŠèŠå ããšããæ¬ãžã®ãªã³ã¯ãèŠã€ããŸããã 圌ã¯éããèŠãŠãèªã¿å§ããŸãã-ãããŠããã«é¢äžããŸããïŒ ãã®æ¬ã¯ã·ã³ãã«ã§ããããããè±èªã§æžãããŠãããèè
èªèº«ãçŽ æŽãããèå³æ·±ãã¹ããŒãªãŒãã©ãŒã§ãããåºæ¬ããD3ã®ãããã¯ãããæããã«ããŠããŸãã
ãã®æ¬ãèªãã çµæã«åºã¥ããŠïŒãããã¯ã«é¢ããä»ã®ããã¥ã¡ã³ããšäžŠè¡ããŠïŒãã·ã³ãã«ã§ãããã«ãªç·åœ¢ã°ã©ããæ§ç¯ããããã®å°ããªïŒããæ£ç¢ºã«ã¯ãããããé¡åŸ®é¡ã®ïŒã©ã€ãã©ãªãèªåã§æžããŸããã ãããŠæ¬¡ã«ããã®ã©ã€ãã©ãªã®äŸã§ãD3.jsã䜿çšããŠã°ã©ããäœæããããšã¯ãŸã£ããé£ãããªãããšã瀺ããããšæããŸãã
ã ããïŒç§ã®å¥œããªèšèïŒãå§ããŸãããã
ãŸããã©ã®ããŒã¿ãã°ã©ãã®åœ¢ã§åæ§ç¯ãããã決ããŸãããã äžé£ã®æ¡ä»¶ä»ãããŒã¿ãèªåãã匷èŠããªãããšã決ããŸããããæ¯æ¥ééããå®éã®ããŒã¿ãååŸããããç解ããããããããã«ããããåçŽåããã³éå人åããŸããã
ããçš®ã®æ¡ä»¶ä»ãé±åºã§ã®éé±ç³ã®æœåºãšåŠçã®ããã®ããçš®ã®ãã©ã³ããæ³åããŠã¿ãŠãã ããïŒããã£ã³ãã«ãã¡ã¯ããªãŒãïŒãæåŠã®å€å
žããã®ãã£ãããã¬ãŒãºãæãåºããŸããããã£ã³ãã«ãã¡ã¯ããªãŒã¯æ¬¡ã®æ¥ãŸã§å»¶æããããããããŒã¿ã¯ãã§ã«æºåãããŠããŸãåïŒã
ããã§ãé±ç³ãæœåºããŠéãçç£ããŸãã ãã£ãŒã«ããçç£æœèšãªã©ã®å°è³ªåŠçç¹åŸŽãèæ
®ããŠãæè¡è
ãäœæããçç£èšç»ããããŸãã ãªã©ãªã©ã èšç»ïŒãã®å ŽåïŒã¯æããšã«åé¡ãããŠããããã®èšç»ãéæããããã«ç¹å®ã®æã«ã©ãã ãã®é±ç³ãæ¡æããã³ç²Ÿé¬ããå¿
èŠããããã確èªã§ããŸãã äºå®ããããŸã-èšç»ã®å®æœã«é¢ããæ¯æã®å®éã®ããŒã¿ã ããããã¹ãŠãã°ã©ãã«è¡šç€ºããŸãããã
ãµãŒããŒã¯ãäžèšã®ããŒã¿ã次ã®tsvãã¡ã€ã«ã®åœ¢åŒã§æäŸããŸãã
Category Date Metal month Mined % fact 25.10.2010 2234 0.88 fact 25.11.2010 4167 2.55 ... plan 25.09.2010 1510 1 plan 25.10.2010 2790 2 plan 25.11.2010 3820 4 ...
ã«ããŽãªåã®èšç»å€ãŸãã¯å®éå€ã¯ã©ãã«ãããŸãããæ¥ä»ã¯åæã®ããŒã¿ã§ãïŒ25æ¥ç®ã«æ¥ä»ãèšå
¥ããŸãïŒãéå±æã¯èšç»ããïŒãŸãã¯åãåã£ãïŒæã®éå±éãããã³MinedïŒ
åã¯éå±ã®å²åã§ãçŸåšæ¡æãããŠããŸãã
ããŒã¿ã§ãã¹ãŠãæ確ã«ãªã£ããšæããŸãããä»ã¯ããã°ã©ã ãéå§ããŠããŸãã ã©ã€ãã©ãªã®åŒã³åºããCSSã¹ã¿ã€ã«ãªã©ããã¹ãŠã®ã³ãŒãã衚瀺ããããã§ã¯ãããŸãããèšäºãç
©éã«ãããäž»èŠãªããšã«éäžããªãããã«ããããã§ããèšäºã®æåŸã«ãããªã³ã¯ã§ãããã§èª¬æããgithubãããŠã³ããŒãã§ããŸãã
ãŸããd3.tsvé¢æ°ã䜿çšããŠãããŒã¿ãããŒãããŸãã
d3.tsv("sample.tsv", function(error, data) { if (error) throw error;
D3ãžã®ããŒã¿ã®ã¢ããããŒãã¯éåžžã«ç°¡åã§ãã ããŒã¿ãå¥ã®åœ¢åŒãããšãã°csvã§èªã¿èŸŒãå¿
èŠãããå Žåã¯ãåŒã³åºããd3.tsvããd3.svã«å€æŽããã ãã§ãã ããŒã¿ã¯JSON圢åŒã§ããïŒ åŒã³åºããd3.jsonã«å€æŽããŸãã 3ã€ã®åœ¢åŒãã¹ãŠãè©Šããç§ã«ãšã£ãŠæã䟿å©ãªtsvã«æ±ºããŸããã 奜ããªãã®ã䜿çšããããããã°ã©ã ã§çŽæ¥ããŒã¿ãçæããããšãã§ããŸãã
äžã®å³ã§ã¯ãããã°ã©ã ã§ããŠã³ããŒãããããŒã¿ãã©ã®ããã«èŠãããã確èªã§ããŸãã

å³ãããèŠããšãããŒã¿ãè¡ã®åœ¢åŒã§ããŒããããŠããããšãããããŸããããã°ã©ã ã®æ¬¡ã®æ®µéã¯ãæ¥ä»ãæ¥ä»ããŒã¿åã«ãããžã¿ã«å€ãæ°å€åã«å€æããããšã§ãã ãããã®åæžããªããšãD3ã¯æ¥ä»ãæ£ããåŠçã§ãããããžã¿ã«å€ã«å¯ŸããŠéžæçãªã¢ãããŒããåããŸãã ããã€ãã®æ°åã䜿çšãããä»ã®æ°åã¯åã«ç¡èŠãããŸãã ãããã®ãã£ã¹ãã§ã¯ã次ã®é¢æ°ãåŒã³åºããŸãã
preParceDann("Date","%d.%m.%Y",["Metal month","Mined %"],data);
ãã®é¢æ°ã®ãã©ã¡ãŒã¿ãŒã§ã¯ãæ¥ä»ãæžã蟌ãŸããåã®ååãD3ã§æ¥ä»ãæžã蟌ãããã®èŠåã«åŸã£ãæ¥ä»åœ¢åŒãæž¡ããŸãã 次ã«ãããžã¿ã«å€ã®å€æãè¡ãåã®ååãå«ãé
åãä»å±ããŸãã æåŸã®ãã©ã¡ãŒã¿ãŒã¯ã以åã«ããŠã³ããŒãããããŒã¿ã§ãã å€æé¢æ°èªäœã¯éåžžã«å°ãããããåã³ããã«æ»ããªãããã«ãããã«ããããããããŸãã
function preParceDann(dateColumn,dateFormat,usedNumColumns,data){ var parse = d3.time.format(dateFormat).parse; data.forEach(function(d) { d[dateColumn] = parse(d[dateColumn]); for (var i = 0, len = usedNumColumns.length; i < len; i += 1) { d[usedNumColumns[i]] = +d[usedNumColumns[i]]; } }); };
ããã§ã¯ãæ¥ä»è§£æé¢æ°ãåæåããåããŒã¿è¡ã«ã€ããŠæ¥ä»ãå€æããæå®ãããåã«ã€ããŠè¡ãæ°å€ã«å€æããŸãã
ãã®æ©èœãå®è¡ãããšãããŒã¿ã¯æ¬¡ã®åœ¢åŒã§è¡šç€ºãããŸãã

ããã«èãããã質åã«çããŸã-ãã®æ©èœã§ãããžã¿ã«ããŒã¿ããã©ãŒãããããåã®ãªã¹ããè€éã«ãªãã®ã¯ãªãã§ããïŒ -ãããŠããã®çãã¯ç°¡åã§ããå®éã®ããŒãã«ã§ã¯ãã¯ããã«å€ãã®åãååšããå¯èœæ§ãããïŒãŸãååšããŸãïŒããã¹ãŠãããžã¿ã«ã§ãããšã¯éããŸããã ãããŠãã°ã©ãã®ãã¹ãŠã®åãæ§ç¯ããããã§ã¯ãªãã®ã§ãããŒã¿ãå€æããããã«ç¹å¥ãªæäœãå¿
èŠãªã®ã¯ãªãã§ããïŒ
次ã®ã¹ãããã«é²ãåã«ãããŒã¿ãã¡ã€ã«ãåŒã³åºããŠã¿ãŸãããããŸããå®éã®ããŒã¿ã次ã«èšèšããŒã¿ãé çªã«æžã蟌ãŸããŸãã ããŒã¿ããã®ãŸãŸåæ§ç¯ãããšãå®å
šã«æ··ä¹±ããŸãã äºå®ãšèšç»ã®äž¡æ¹ãåäžã®å³ã«æãããŠããããã§ãã ãããã£ãŠã奜å¥å¿ã匷ãååã®ãã¹ãïŒãœã±ããïŒã䜿çšããŠD3é¢æ°ã䜿çšããŠãå¥ã®ããŒã¿æäœãå®è¡ããŸãã
var dataGroup = d3.nest() .key(function(d) { return d.Category; }) .entries(data);
ãã®é¢æ°ã®çµæãšããŠã次ã®ããŒã¿ã»ãããååŸããŸãã

ããŒã¿é
åã¯æ¢ã«2ã€ã®ãµãé
åã«åå²ãããŠããããšãããããŸãã1ã€ã®äºå®ãšå¥ã®èšç»ã§ãã
ãã¹ãŠãå®äºããããŒã¿ã®æºåãå®äºããŸããã次ã«ãããããçšã®ãã©ã¡ãŒã¿ãŒãèšå®ããã¿ã¹ã¯ã«é²ã¿ãŸãã
var param = { parentSelector: "#chart1", width: 600, height: 300, title: "Iron mine work", xColumn: "Date", xColumnDate: true, yLeftAxisName: "Tonnes", yRightAxisName: "%", categories: [ {name: "plan", width: "1px"}, {name: "fact", width: "2px"} ], series: [ {yColumn: "Metal month", color: "#ff6600", yAxis: "left"}, {yColumn: "Mined %", color: "#0080ff", yAxis: "right"} ] };
ããã§ã¯ãã¹ãŠãç°¡åã§ãïŒ
ãã©ã¡ãŒã¿ | äŸ¡å€ |
---|
parentSelector | ãã£ãŒããåæ§ç¯ãããããŒãžã®èŠçŽ ã®ID |
å¹
ïŒ600 | å¹
|
é«ãïŒ300 | èº«é· |
ã¿ã€ãã«ïŒãéé±å±±ã®ä»äºã | èŠåºã |
xColumnïŒãæ¥ä»ã | X軞ã®åº§æšãååŸãããåã®åå |
xColumnDateïŒtrue | trueã®å Žåãx軞ã¯æ¥ä»ã§ãïŒæ®å¿µãªããããã®æ©èœã¯ãŸã æªå®æã§ããã€ãŸããx軞ã«æ¥ä»ããããããã§ããŸããïŒ |
yLeftAxisNameïŒããã³ã | å·Šã®y軞ã®åå |
yRightAxisNameïŒ "ïŒ
" | å³ã®y軞ã®åå |
ã«ããŽãªïŒ | ç§ã¯é·ãéããããã©ãåœåããããèããŸããã ããã¯ããœã±ãããD3ããé£ã³åºããã«ããŽãªãããåªãããã®ã¯ãããŸããã§ããã åã«ããŽãªã«ã¯ãååãèšå®ãããŸã-ããŒã¿ã§ã©ã®ããã«è¡šèšãããããæ§é ã®å¹
|
ã·ãªãŒãºïŒ | å®éã«ã¯ããã€ã¢ã°ã©ã èªäœãy軞ã®å€ãååŸããåãè²ãããã³ãã€ã¢ã°ã©ã ãå·ŠãŸãã¯å³ã«å±ãã軞ãæå®ããŸãã |
ãã¹ãŠã®åæããŒã¿ãèšå®ããæåŸã«ãããããåŒã³åºããŠçµæã楜ãã¿ãŸãïŒ
d3sChart(param,data,dataGroup);

ãã®ãã£ãŒãã«ã¯äœãèŠããŸããïŒ ããããèšç»ã¯é床ã«æ¥œèŠ³çã§ãããä¿¡é Œæ§ã®é«ãäºæž¬ãè¡ãããã«ã¯ãé¿ããããªãä¿®æ£ãå¿
èŠã§ããããšãããããŸãã ãŸããå¶äœã詳ããèŠãå¿
èŠããããŸããå®éã®ã¹ã±ãžã¥ãŒã«ã¯çã
ããã»ã©åŒãè£ãããŠããŸã...ããããŸãããããããŸãã-ããã°ã©ããŒãšåŒã°ãã人ãããªãå Žæã«ãã§ã«è¡ããŸããã
ç¹°ãè¿ããŸããããã£ãŒãäœæé¢æ°ã®åŒã³åºããç¹°ãè¿ããŸãã
d3sChart(param,data,dataGroup);
ãããèŠããšãåççãªè³ªåãçããŸãããããããããªãã¯ç§ã«å°ãããã§ããã-ãªã2ã€ã®ããŒã¿é
åãdataãšdataGroupãé¢æ°ã«è»¢éãããŸããïŒ ç§ã¯çããŸãïŒè»žã®ããŒã¿ç¯å²ãæ£ããèšå®ããã«ã¯ãåæããŒã¿é
åãå¿
èŠã§ãã ããã¯ããŸãã¯ã£ããããŠããªãããã«æããŸãããããã«ãã®ç¹ã説æããããšæããŸãã
æ§ç¯é¢æ°ã§æåã«è¡ãããšã¯ããã£ãŒããæ§ç¯ãããªããžã§ã¯ãããããã©ããã確èªããããšã§ãã ãã®ãªããžã§ã¯ãèªäœãååšããªãå Žåãç§ãã¡ã¯å€ãã®ããšãèªããŸãïŒ
function d3sChart (param,data,dataGroup){
次ã®ã¢ã¯ã·ã§ã³ïŒããŸããŸãªã€ã³ãã³ãããµã€ãºãåæåããã¹ã±ãŒã«ãäœæããŸãã
var margin = {top: 30, right: 40, bottom: 30, left: 50}, width = param.width - margin.left - margin.right, height = param.height - margin.top - margin.bottom;
ã€ã³ãã¥ããŒã·ã§ã³ããã»ã¹ã人çºçã«å éãããŠãããããã©ã€ãã©ãªãhatchåããã°ããã§ãå€éšããã®èª¿æŽïŒã€ã³ãã³ããªã©ïŒã«æ
£ããŠããªãããšãå¿ããªãã§ãã ããã ãããã£ãŠãããäžåºŠãç§ã¯ããªãã«ç解ããŠèš±ããããé¡ãããŸãã
åè«ãšããŠåè«ãèšã£ãŠããŸãããäžèšã®ã³ãŒãã«æ»ããŸã-ã€ã³ãã³ããšãµã€ãºã䜿çšãããšããã¹ãŠãæ確ã§ãããšæããŸããå
ã®åº§æšãæ§ç¯é åã®åº§æšã«å€æããããã®ã¹ã±ãŒã«ãå¿
èŠã§ãã x軞ã¯ã¿ã€ã ã©ã€ã³ãšããŠåæåãããå·Šå³ã®y軞ã¹ã±ãŒã«ã¯ç·åœ¢ãšããŠåæåãããŠããããšãããããŸãã äžè¬ã«ãD3ã«ã¯ããŸããŸãªã¹ã±ãŒã«ããããŸãããããããèæ
®ããããšã¯ãä»ã®å€ãã®ããšãšåæ§ããã®èšäºã®ç¯å²ãã¯ããã«è¶
ããŠããŸãã
ç¶ç¶ããŠãã¹ã±ãŒã«ãäœæããŸããã次ã«ãã¹ã±ãŒã«ãæ§æããå¿
èŠããããŸãã ãããŠãããã§ãã®ãœãŒã¹ããŒã¿ã»ããã圹ç«ã¡ãŸãã éåžžã«ç°¡åãªå Žå-åã®ã¢ã¯ã·ã§ã³ã§ãã°ã©ãã®åº§æšã«ã¹ã±ãŒã«ã®ç¯å²ãèšå®ãã次ã®ã³ãã³ãã§ãã®ç¯å²ãããŒã¿ç¯å²ã«é¢é£ä»ããŸãã
xScale.domain([d3.min(data, function(d) { return d[param.xColumn]; }), d3.max(data, function(d) { return d[param.xColumn]; })]); yScaleLeft.domain([0,d3.max(data, function(d) { return d[param.series[0].yColumn]; })]); yScaleRight.domain([0,d3.max(data, function(d) { return d[param.series[1].yColumn]; })]);
Xã¹ã±ãŒã«ã§ã¯ãããŒã¿ã®æå°æ¥ä»ã«æå°å€ãèšå®ããæ倧å€ã«æ倧å€ãèšå®ããŸãã Y軞ã®å Žåãæå°å€ãšããŠ0ã䜿çšããããŒã¿ããæ倧å€ãåŠç¿ããŸãã ãã®ãããæå°å€ãšæ倧å€ãèŠã€ããããã«åãç®ã®ãªãããŒã¿ãå¿
èŠã§ããã
次ã®ã¹ãããã¯ã軞ãèšå®ããããšã§ãã ããããå°ãæ··ä¹±ãå§ãŸããŸãã D3ã«ã¯ã¹ã±ãŒã«ãšè»žããããŸãã ã¹ã±ãŒã«ã¯ããœãŒã¹åº§æšãããããé åã®åº§æšã«å€æãã圹å²ãæãããŸããã軞ã¯ããã£ãŒãäžã«è¡šç€ºãããæ£ãããã·ã¥ããã·ã¢èªã§è¡šç€ºããããã«èšèšãããŠããŸãã ãããã£ãŠãå°æ¥ãã¹ã±ãŒã«ãæžãå Žåã軞ã«ã€ããŠè©±ããŠããããšã«æ³šæããŠãã ããã ãã£ãŒãã«ã¹ã±ãŒã«ãæãããšã«ã€ããŠã
ãããã£ãŠãY軞çšã«2ã€ã®ã¹ã±ãŒã«ãšX軞çšã«1ã€ã®ã¹ã±ãŒã«ãããããšãæãåºããŠãã ããã åé¡ã®äºå®ã¯ãD3ãããã©ã«ãã§æ¥ä»ã¹ã±ãŒã«ã衚瀺ããæ¹æ³ã«å®å
šã«äžæºã ã£ãããšã§ãã ããããç§ãå¿
èŠãšããæ¹æ³ã§æ¥ä»ã®çœ²åãèšå®ããããšãããã¹ãŠã®è©Šã¿ã¯ããã®ã©ã€ãã©ãªã®åãšèšå¿µç¢ã®å²©ã®äžã§æ³¢ã®ããã«å£ããŸããã ãããã£ãŠãç§ã¯åœé ãšæ¬ºdeã«è¡ããªããã°ãªããŸããã§ããïŒç§ã¯X軞äžã«2ã€ã®ã¹ã±ãŒã«ãäœæããŸããã æ°ãæéãåºåããæåã®æãé€å€ããå°ããªãã§ãã¯ãè¿œå ãããŸããã çµå±ãã»ãã®æ°æåã«ãç§ã¯ãã®ã©ã€ãã©ãªãèšå¿µç¢çãªãã®ã ãšéé£ããŸãããããã«ãæè»æ§ã®çŽ æŽãããäŸããããŸãã
var xAxis = d3.svg.axis().scale(xScale).orient("bottom") .ticks(d3.time.year,1).tickFormat(d3.time.format("%Y")) .tickSize(10); var monthNameFormat = d3.time.format("%m"); var xAxis2 = d3.svg.axis().scale(xScale).orient("bottom") .ticks(d3.time.month,2).tickFormat(function(d) { var a = monthNameFormat(d); if (a == "01") {a = ""}; return a;}) .tickSize(2); var yAxisLeft = d3.svg.axis().scale(yScaleLeft).orient("left"); var yAxisRight = d3.svg.axis().scale(yScaleRight).orient("right");
ã³ãŒãã®æ€èšãç¶ããŸãã ãã¹ãŠã®æºåäœæ¥ãå®æœããçŸåšãç»åã®åœ¢æã«çŽæ¥é²ãã§ããŸãã 次ã®4è¡ã®ã³ãŒãã¯ã svgé åãé çªã«äœæããçé«ç·ãã¬ãŒã ãæç»ããæå®ããããªãã»ããã䜿çšããŠsvgãªããžã§ã¯ãã®ã°ã«ãŒããäœæããŸãããã®äžã«ãã£ãŒããæ§ç¯ãããŸãã æåŸã®ã¢ã¯ã·ã§ã³-ã¿ã€ãã«ã衚瀺ãããŸãã
var svg = selectedObj.append("svg") .attr({width: param.width, height: param.height});
次ã®å€§ããªã³ãŒãã¯ã3ã€ã®è»žã®æž¬å®åäœã«çœ²åããŸãã ãã¹ãŠãæ確ã§ããã詳现ã«æ€èšããå¿
èŠã¯ãªããšæããŸãã
g.append("g").attr("class", "x axis").attr("transform", "translate(0," + height + ")") .call(xAxis) .append("text") .attr("x", width-20).attr("dx", ".71em") .attr("y", -4).style("text-anchor", "end") .text(param.xColumn); g.append("g").attr("class", "x axis2").attr("transform", "translate(0," + height + ")") .call(xAxis2); g.append("g").attr("class", "y axis") .call(yAxisLeft) .append("text").attr("transform", "rotate(-90)") .attr("y", 6).attr("dy", ".71em").style("text-anchor", "end") .text(param.yLeftAxisName); g.append("g").attr("class", "y axis").attr("transform", "translate(" + width + " ,0)") .call(yAxisRight) .append("text").attr("transform", "rotate(-90)") .attr("y", -14).attr("dy", ".71em").style("text-anchor", "end") .text(param.yRightAxisName);
æåŸã«ããã£ãŒãäœææ©èœã®äžå¿ã¯ããã€ã¢ã°ã©ã èªäœã®æç»ã§ãã
dataGroup.forEach(function(d, i) { for (var i = 0, len = param.categories.length; i < len; i += 1) { if (param.categories[i].name == d.key){ for (var j = 0, len1 = param.series.length; j < len1; j += 1) { if (param.series[j].yAxis == "left"){
ãäºãã«åã蟌ãŸãã3ã€ã®ãµã€ã¯ã«ïŒã-æãã§å«ã¶ã ãããŠãããªãã¯ããªãã®inãã«çµ¶å¯Ÿã«æ£ããã§ããã-ç§èªèº«ã¯ãã®ãããªå
¥ãåæ§é ãäœãã®ã¯å¥œãã§ã¯ãããŸããããæã
ããããªããã°ãªããŸããã ã«ãŒãã®3çªç®ã®ãã¹ãã§ã¯ããã£ãŒãã©ã€ã³ãåæåããŸããã·ãªãŒãºã«å¿ããŠããã®ã©ã€ã³ãå³ç®çãšå·Šç®çã®ã©ã¡ãã«å±ãããã瀺ããŸãã ãã®åŸã2çªç®ã®ãã¹ãã§ãã°ã©ãã«ç·ã衚瀺ããã«ããŽãªããããã£ãã倪ããèšå®ããŸãã ã€ãŸã å®éãæ§ç¯ã«é¢äžããã³ãŒãã¯2è¡ã®ã¿ã§ããä»ã®ãã¹ãŠã¯ããã£ãŒãäžã®ç°ãªãæ°ã®ãã€ã¢ã°ã©ã ãåŠçããããã«å¿
èŠãªãã€ã³ãã£ã³ã°ã§ãã
ããŠãã¹ã±ãžã¥ãŒã«ã®æåŸã®ã¢ã¯ã·ã§ã³ã¯ãäŒèª¬ã®çµè«ã§ãã ç§ã¯äŒèª¬ãæãæ¹ããŸãã-ç§ã¯ãã§ã«æ¥ãã§ããŠå€±æããŸããããã®ã³ãŒãã¯ããã«æžãæããããD3ã§ã¯ãã¹ãŠãéåžžã«ã·ã³ãã«ã§ããããšãããäžåºŠå®èšŒããããã ãã«ããã瀺ããŸãã ãããŠããŸã -ããªããããå¿
èŠããªãæ¹æ³ã®è¯ãäŸã§ãïŒ
var legend = svg.append("g").attr("class", "legend").attr("height", 40).attr("width", 200) .attr("transform", "translate(180,20)"); legend.selectAll('rect').data(param.series).enter() .append("rect").attr("y", 0 - (margin.top / 2)).attr("x", function(d, i){ return i * 90;}) .attr("width", 10).attr("height", 10) .style("fill", function(d) {return d.color; }); legend.selectAll('text').data(param.series).enter() .append("text").attr("y", 0 - (margin.top / 2)+10).attr("x", function(d, i){ return i * 90 + 11;}) .text(function(d) { return d.yColumn; });
以äžã§ãã ãæž
èŽããããšãããããŸããïŒ ç§ã®èšäºã§ããªãã倱æãããªãã£ãããšãé¡ã£ãŠããŸãã
ã³ãŒããšãœãŒã¹ããŒã¿ã®ãµã³ãã«ã¯ã GithubããããŠã³ããŒãã§ããŸãã
çµè«ãšããŠãD3ã©ã€ãã©ãªãèªåã§ç解ããããšãããšãã«ãåæ§ã®èšäºãŸãã¯ãã¥ãŒããªã¢ã«ãæ¢ããŠããããšãä»ãå ããŸãã ããŒã¿ãããŒãããã³æºåããæ¹æ³ãæ§ç¯ãšãªã¢ãäœæããã³æ§æããæ¹æ³ããã®ããŒã¿ã衚瀺ããæ¹æ³ãªã©ãäŸã䜿çšããŠåå¥ã«é çªã«è¡šç€ºãããèšäºãæ¢ããŠããŸããã æ®å¿µãªããããã®ãããªãã®ã¯èŠãããŸããã§ãããèè
ã®D3ã®äŸã§ã¯ãã¹ãŠãæ··åãããŠãããããäœæ¥ã®ããžãã¯ãç解ããããã®ã©ã€ãã©ãªã®æåã®ç¥èããããŸããããã®ããŒã¿ã®è¡šç€ºãããã³ãã®éã
2016幎6æ23æ¥æŽæ° Githubã§ããã°ã©ã ãæŽæ°ããŸãããã¿ã€ã ã©ã€ã³ãå®æãããX軞ã®æ¥ä»ã®ä»£ããã«æ°å€ã·ãªãŒãºãéå§ã§ããããã«ããããã€ãã®ãšã©ãŒãä¿®æ£ããããã«ã«ããŽãªãªãã§ã°ã©ããäœæã§ããããã«ãªããŸããã
2016幎8æ12æ¥æŽæ° d3ã®4çªç®ã®ããŒãžã§ã³ã§åäœããããã«ããã°ã©ã ãåç·šéããŸããã å€ãã®éäºææ§ãåºãŸããã ãã®èšäºã§èª¬æããäŸã¯ãã©ã€ãã©ãªã®3çªç®ã®ããŒãžã§ã³ã§ã®ã¿æ©èœãããã¡ã€ã«åã«_v3ãã¬ãã£ãã¯ã¹ãä»ãããã¡ã€ã«ã®githubã«ãããŸãã