2015年6月2日火曜日

グラフの描画, データの可視化

  • OS X Yosemite - Apple (OS)
  • Safari, Firefox, Google Chrome(Webプラウザ)
  • Emacs (CUI)、BBEdit - Bare Bones Software, Inc.(GUI) (Text Editor)
  • JavaScript (プログラミング言語)
  • D3.js (JavaScript Library)

Head First Statistics - 頭とからだで覚える統計の基本 (Dawn Griffiths (著)、黒川 利明 (翻訳)、 木下 哲也 (翻訳)、黒川 洋 (翻訳)、黒川 めぐみ (翻訳)、オライリージャパン)の2章(情報を見える化する)、エクササイズ(p.15)の棒グラフを D3.js を使って描いてみる。

エクササイズ(p.15)

JavaScript(BBEdit, Emacs)

var dataset = [1500, 500, 1500, 2000, 1000, 500, 1],
    regions = ['北米', '南米', 'ヨーロッパ', 'アジア', 'オセアニア', 'アフリカ',
               '南極'],
    x_scale,
    y_scale,
    len = dataset.length,
    width = 500,
    height = 500,
    bar_padding = 10,
    bar_width,
    padding = 25,
    svg,
    x_axis,
    y_axis;

bar_width = height / len - bar_padding - padding;

x_scale = d3.scale.linear()
    .domain([d3.min(dataset), d3.max(dataset)])
    .range([padding, width -  padding]);
y_scale = d3.scale.linear()
    .domain([0, len])
    .range([bar_width, bar_width]);

svg = d3.select('div#answer')
    .append('svg')
    .attr({
        width: width,
        height: height
    });

svg.selectAll('rect')
    .data(dataset)
    .enter()
    .append('rect')
    .attr({
        x: padding,
        y: function (d, i) {
            return i * (height / len);
        },
        width: function (d) {
            return x_scale(d);
        },
        height: function (d, i) {
            return y_scale(i);
        },
        fill: 'skyblue'
    });

svg.selectAll('text')
    .data(regions)
    .enter()
    .append('text')
    .text(function(d) {
        return d;
    })
    .attr({
        x: 2 * padding,
        y: function (d, i) {
            return i * (height / len) + 2 * bar_padding;
        },
        fill: 'black'
    });

x_axis = d3.svg.axis()
    .scale(x_scale)
    .orient('bottom');
svg.append('g')
    .attr('transform', 'translate(0, ' + (height - padding) + ')')
    .call(x_axis);

0 コメント:

コメントを投稿