8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Chart Toolsで人口ピラミッドのグラフを描画する

Posted at

はじめに

前回と同じくGoogle Chart Toolsを使ってグラフを描いていきます。

今回はBarChartで人口ピラミッドのグラフを描きます。

今回の完成形

pyramid_sample.png

ただ積み上げ棒グラフでピラミッドを作ろうとするとmaleかfemaleの値がマイナス値になってしまいますのでその設定をしました。

それとtooltipを半透明にしてみました。
実際の動きは JSFiddle で確認できます。

コードの中身

html
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>
css
.google-visualization-tooltip {
  opacity: 0.9;
}
javascript
google.charts.load('current', {packages: ['corechart', 'bar']});
google.charts.setOnLoadCallback(drawPyramid);

function drawPyramid() {
      
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'City');
  data.addColumn('number', 'male');
  data.addColumn('number', 'female');
      
  data.addRows([
      ['A', 81750, -80080],
      ['B', 37920, -36940],
      ['C', 26950, -28960],
      ['D', 20990, -19530],
      ['E', 15260, -15170]
  ]);

  var options = {
    title: 'people',
    isStacked: true,
    hAxis: {
      format: ';',
      direction: -1
    },
    vAxis: {
      direction: -1
    },
    legend: {
      position: 'bottom',
      maxLines: 3
    },
    tooltip: {
      isHtml: true
    },
    focusTarget: 'category'
  };

  var chart = new google.visualization.BarChart(document.getElementById('chart_div'));

  var formatter = new google.visualization.NumberFormat({
      pattern: '#,###;'
  });
  formatter.format(data, 2);

  chart.draw(data, options);
}

Optionsについて

hAxis

formatで表示上も絶対値にしています。
directionでmaleとfemaleの伸びる方向を逆にしています。

hAxis: {
  format: ';',
  direction: -1
},

vAxis

directionでaddRowしたデータを下から設定するようにしています。

vAxis: {
  direction: -1
},

tooltip

isHtmlをtrueにすることでツールチップにCSSの設定が反映されます。

tooltip: {
  isHtml: true
},

NumberFormatについて

ツールチップで表示される値はこのフォーマットで設定しないとマイナス値を表示してしまうので、設定します。

var formatter = new google.visualization.NumberFormat({
  pattern: '#,###;'
});
formatter.format(data, 2);

Tooltipの半透明の設定

CSSで透明度を設定しています。グラフオプションのtooltip.isHtmlをtrueにしないと効かないので必ず設定が必要です。

.google-visualization-tooltip {
  opacity: 0.9;
}

最後に

今回はピラミッドのグラフを描画しました。
データにマイナス値を用意しないといけないのでCSVやJSONから値を入れるときは一度マイナス値にする関数を用意しないといけないなと思いました。

8
10
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
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?