LoginSignup
2
1

More than 5 years have passed since last update.

この記事でやること

  • D3.jsでCSV形式のデータファイルを元に棒グラフを表示します
    • 元データ:CSVファイル
    • 描画方法:HTML(あまり良い使い方ではありませんが、今回は例として)
  • 要素の追加と属性設定を行います

ソースコード

HTML

index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- 基本スタイルシート -->
<link rel="stylesheet" type="text/css" href="main.css">
<title>D3.js CSVデータから棒グラフを表示</title>
</head>
<body>
<!-- 棒グラフの描画先-->
<div id="graph"></div>
</body>
<!-- D3.js -->
<script src="https://d3js.org/d3.v4.min.js"></script>
<!-- 本体処理 -->
<script src="main.js"></script>
</html>

JavaScript

main.js
// 読み込みCSVファイル
var DATA_FILE_PATH = './data.csv';
// グラフ描画先
var TARGET_ELEMENT_ID = '#graph';
// 項目名:名前
var COL_NAME = 'name';
// 項目名:値
var COL_VALUE = 'value';

drawGraph();

/**
 * 棒グラフの描画
 */
function drawGraph() {
    // 第2引数のlistの中に読み込んだCSVデータがある
    d3.csv(DATA_FILE_PATH, function(error, list){
        // グラフの外枠テーブル作成
        var table = d3.select(TARGET_ELEMENT_ID)
            .append('table')
            .selectAll()
            .data(list)
            .enter();

        // 行作成
        var row = table.append('tr');

        // 項目名セル
        row.append('th')
            .text(function(d) {
                return d[COL_NAME];
            });
        // 値セルと棒表示
        row.append('td')
            .append('div')
            .attr('class', 'value')
            .attr('style', function(d) {
                return 'width:' + d[COL_VALUE] + 'px;';
            })
            .text(function(d) {
                return d[COL_VALUE];
            });
    });
}

CSS

main.css
/* 棒グラフの棒部分 */
.value {
    background-color: #cce;
    border: solid 1px #99a;
}

データファイル(CSV)

data.csv
name,value
A-A,200
A-B,100
A-C,150
A-D,100
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1