[Google Charts] Line Chart で軸をカスタマイズ

投稿者: | 2021年3月15日

一か月単位の記録など、横軸と縦軸のレンジを予め定めておいてから、線グラフを描画したいというシーンはよくあります。

今回は、Google Chart の Line Chart を使用して、そのようなグラフを描いてみたいと思います。

パッケージのロード

Line Chart なので、最新版の’corechart’ をロードします。

google.charts.load('current', {'packages':['corechart']});

データセット・描画

日付毎に体重を記録するという体でデータをセットし、描画してみます。

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
	<head>
		<title>expense page</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
		<script type="text/javascript">
			google.charts.load('current', {'packages':['corechart']});
			google.charts.setOnLoadCallback(drawChart);
 
			function drawChart() {
				var data = new google.visualization.DataTable();
				data.addColumn('date', '日付');
				data.addColumn('number', '体重');
				
				data.addRow([new Date(2021, 2, 1), 63.5]);
				data.addRow([new Date(2021, 2, 2), 62.5]);
				data.addRow([new Date(2021, 2, 3), 63.5]);
				data.addRow([new Date(2021, 2, 4), 61.0]);
				data.addRow([new Date(2021, 2, 5), 62.0]);
				data.addRow([new Date(2021, 2, 6), 60.5]);
 
				var chart = new google.visualization.LineChart(document.getElementById('chart'));
				chart.draw(data);
			}
		</script>
	</head>
	<body>
		<div id = "chart" />
	</body>
</html>

グラフを確認すると、このようになっています。

これはこれでまあ悪くはないのですが、横軸にはあらかじめ一か月分を表示し、縦軸ももう少し広い範囲を出しておきたいところです。

横軸レンジの設定

横軸を一か月分設定し表示するには、今回の場合は Date クラスを使用します。

オプションとして hAxis を次のように定義しておきます。

2021年3月1日から3月31日まで表示するための設定です。

					hAxis: {
						format: 'yyyy年MM月dd日',
						viewWindow: {
							min: new Date(2021, 2, 1),
							max: new Date(2021, 2, 31)
						}
					}

縦軸レンジの設定

縦軸のレンジも決定しておきます。

0kg ~ 80kg ぐらいまで表示しておくようにします。

縦軸のオプションは vAxis を使います。

					vAxis: {
						viewWindow: {
							min: 0,
							max: 80
						}
					}

サンプルコードと動作確認

これまで追加したオプションも含めた全体のサンプルコードはこのようになります。

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
	<head>
		<title>expense page</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
		<script type="text/javascript">
			google.charts.load('current', {'packages':['corechart']});
			google.charts.setOnLoadCallback(drawChart);
 
			function drawChart() {
				var data = new google.visualization.DataTable();
				data.addColumn('date', '日付');
				data.addColumn('number', '体重');
				
				data.addRow([new Date(2021, 2, 1), 63.5]);
				data.addRow([new Date(2021, 2, 2), 62.5]);
				data.addRow([new Date(2021, 2, 3), 63.5]);
				data.addRow([new Date(2021, 2, 4), 61.0]);
				data.addRow([new Date(2021, 2, 5), 62.0]);
				data.addRow([new Date(2021, 2, 6), 60.5]);

				var options = {
					width: 600,
					height: 400,
					hAxis: {
						format: 'yyyy年MM月dd日',
						viewWindow: {
							min: new Date(2021, 2, 1),
							max: new Date(2021, 2, 31)
						}
					},
					vAxis: {
						viewWindow: {
							min: 0,
							max: 80
						}
					}

				};
 
				var chart = new google.visualization.LineChart(document.getElementById('chart'));
				chart.draw(data, options);
			}
		</script>
	</head>
	<body>
		<div id = "chart" />
	</body>
</html>

 

では描画してみましょう。このようになります。

横軸が3月の一か月分、縦軸が0~80のレンジで表示されているのがわかります。