棒グラフ(縦)

グラフ
-棒グラフ(縦)-

デモページを見る

See the Pen 9-5-2 棒グラフ(縦) by 動くWebデザインアイディア帳 (@ugokuweb) on CodePen.

「Result」内の表示を確かめてね!

動きを実現する仕組み

Chart.js というチャートを作成するライブラリを使い、HTML 内の<canvas>タグにグラフを描画する。
グラフの描画はjquery.inview というライブラリを使って、要素が表示されたタイミングで開始。

[使用するライブラリ]
* jQuery
* Chart.js(https://www.chartjs.org/
* jquery.inview(https://github.com/protonet/jquery.inview

HTMLの書き方

  1. body内のグラフを表示させたい場所にid名を付けた<canvas>タグを記載します。
    <canvas id="chart"></canvas>
  2. body 終了タグ直前に jQuery、Chart.js、jquery.inview.js 動きを制御する自作のJS の4 つを読み込みます
    <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/protonet-jquery.inview/1.1.2/jquery.inview.min.js"></script>
    <!--自作のJS-->
    <script src="js/9-5-2.js"></script>
    </body>

自作のJS内の書き方

//値をグラフに表示させる
Chart.plugins.register({
    afterDatasetsDraw: function (chart, easing) {
        var ctx = chart.ctx;
        chart.data.datasets.forEach(function (dataset, i) {
            var meta = chart.getDatasetMeta(i);
            if (!meta.hidden) {
                meta.data.forEach(function (element, index) {
                    // 値の表示
                    ctx.fillStyle = 'rgb(0, 0, 0,0.8)';//文字の色
                    var fontSize = 12;//フォントサイズ
                    var fontStyle = 'normal';//フォントスタイル
                    var fontFamily = 'Arial';//フォントファミリー
                    ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily);

                    var dataString = dataset.data[index].toString();
					
                    // 値の位置
                    ctx.textAlign = 'center';//テキストを中央寄せ
                    ctx.textBaseline = 'middle';//テキストベースラインの位置を中央揃え

                    var padding = 5;//余白
                    var position = element.tooltipPosition();
                    ctx.fillText(dataString, position.x, position.y - (fontSize / 2) - padding);
		
                });
            }
        });
    }
});

//=========== 棒グラフ(縦) ============//
$('#chart01').on('inview', function(event, isInView) {//画面上に入ったらグラフを描画
if (isInView) {
var ctx=document.getElementById("chart01");//グラフを描画したい場所のid
var chart=new Chart(ctx,{
type:'bar',//グラフのタイプ
data:{//グラフのデータ
	labels:["令和3年度","令和4年度","令和5年度",],//データの名前
	datasets:[{
			label:"新入院患者数",//グラフのタイトル
			backgroundColor:"#0584C5",//グラフの色
			data:["724","776","713",]//横列に並ぶデータ
		}]
},
options:{//グラフのオプション
	legend:{
		display: false//グラフの説明を非表示
	},
	tooltips:{//グラフへカーソルを合わせた際の詳細表示の設定
		callbacks:{
        label: function(tooltipItems, data) {
            if(tooltipItems.yLabel == "0"){
                return "";
            }
            return data.datasets[tooltipItems.datasetIndex].label + ":" + tooltipItems.yLabel + "人";//人を最後につける
        }
    }
	},
title:{//上部タイトル表示の設定
		display: true,
		fontSize:10,
		text: '単位:人'
	},
scales:{
		yAxes:[//グラフ縦軸(Y軸)設定
			{
				ticks:{
					beginAtZero:true,//0からスタート
					suggestedMax: 1000,//最大が1000
					suggestedMin: 0,//最小が0
					stepSize: 100,//100づつ数値が刻まれる
					callback: function(value){
						return  value +  '人'//数字+人で表示					
				}
			}
		}
	],
		xAxes:[//グラフ縦軸(X軸)設定
			{
				barPercentage:0.5,//バーの太さ
			}
		]
	}
}
});

}
});

この技術を使ったサンプルサイト

バリエーション
を見る

「機能」に関わる
動き一覧

書籍情報

紙面だからこそできるまとめ方でコードを説明し、
全体を俯瞰して調べることが出来る構成になっています。

もちろん、パーツのサンプルコードもzipでまとめてダウンロードできます。
購入をしてくださった方には特典がありますので是非チェックしてみてください!

書籍紙面サンプル

出版社:ソシム株式会社
2021/2/27 発売

書籍紙面サンプル

出版社:ソシム株式会社
2021/7/31 発売

Page
Top