Chart.js を使う
更新: 2025/3/29

 データの可視化ツールとしての Chart.js があります。 参考1  参考2  参考3  参考4  参考5
 Chart.js は、グラフの情報を受け取って、Html5 で利用できる canvas を使って色々なグラフを書くことが出来ます。

■ Chart.js の利用準備

 Chart.js を使ってグラフを描くには、次の方法の何れかで Chart.js が機能するように組み込む必要があります。
  1. Chart.js 又は圧縮版の Chart.min.js ファイルをダウンロードして使う。 ダウンロードサイト
    引用記述例: <script src="Chart.js"></script>
  2. Chart.js 又は Chart.min.js のリンクサイトにリンクを張って利用する。 CDNリンクサイト
    引用記述例: <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.js"></script>

  注. Chart.js には ver.1 ~ 4(最新) があり、 <script>構文の仕様が異なります。チャートの宣言の仕様は次のように異なります。

  【ver.1.x】(旧) (関数チェーンを使用してチャートを生成)
  
  【ver.2.x】 (一般的なチャートオブジェクトを生成した後、グラフタイプ等を渡す)
  

  【ver.3.x】 (3.x 移行ガイド)  参考  CDN
  

  【ver.4.x】(最新)  4.x 移行ガイド  参考  (npm 版)  (v2・v4 比較)
・対応する CDN が複数ある。
モジュール化して使う場合 新 (ESM専用)
 https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.js
モジュール化されてないコード (通常使用 ≒ v.3 )
 https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js
npm 版 (お勧め npm とは?)  chart.js - npm  作成法
 https://cdn.jsdelivr.net/npm/chart.js

   ※ 以下の例では【ver.2.x】~【ver.4.x】が混在して説明しています。

■ Chart.js (ver.3x) の利用方法

 Chart.js を使ってグラフページを表示するには、以下のように記述 (ver.3.7) します。  Chart.js(ver.3.x)  Chart.js          サンプル
  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.0/chart.min.js"></script>
  6. </head>
  7. <body>
  8. <div style="width:300px; margin:0 auto;"> <!-- グラフ表示枠幅を規定 -->
  9. <canvas id="ChartID"></canvas> <!-- ここにグラフを表示 (xy縦横比 2, width:100%) -->
  10. </div>
  11. <script>
  12. // ここにChart.jsの処理詳細を記述
  13. </script>
  14. </body>
  15. </html>
  つまり、1. Chart.jsを呼び出し(5行目)、
      2. 表示するcanvas要素( 規定値: xy縦横比 2, width:100% )を用意し(9行目)、
      3. scriptでグラフの処理詳細を記述(12行目)します。

■ script の記述例 (ver.3.x)

 グラフの詳細を表示する script は、以下のように記述します。 参考 別ページ表示
  1. <script>
  2. var ctx = document.getElementById('myChart').getContext('2d');
  3. var myChart = new Chart(ctx, {
  4. type: 'line',
  5. data: {
  6. labels: ["2010","2011","2012","2013","2014","2015"],
  7. datasets: [
  8. {
  9. label: "JAPAN",
  10. fill: false, // 下方の塗りつぶしせず
  11. backgroundColor: "#3A7AC9",
  12. borderWidth: 2,
  13. borderColor: "rgba(2,63,138,0.8)",
  14. pointBorderColor: "#fff",
  15. pointBackgroundColor: "rgba(2,63,138,0.8)",
  16. pointBorderWidth: 2,
  17. pointHoverRadius: 5,
  18. pointHoverBackgroundColor: "#1D5191",
  19. pointHoverBorderColor: "#fff",
  20. pointHoverBorderWidth: 2,
  21. tension: 0.2,
  22. data: [5, 7, 8, 3, 1, 4]
  23. }, {
  24. label: "日本",
  25. fill: false, // 下方の塗りつぶしせず
  26. backgroundColor: "#DB514E",
  27. borderWidth: 2,
  28. borderColor: "rgba(201,60,58,0.8)",
  29. pointBorderColor: "#fff",
  30. pointBackgroundColor: "rgba(201,60,58,0.8)",
  31. pointBorderWidth: 2,
  32. pointHoverRadius: 5,
  33. pointHoverBackgroundColor: "#9A1B19",
  34. pointHoverBorderColor: "#fff",
  35. pointHoverBorderWidth: 2,
  36. tension: 0.2,
  37. data: [1, 4, 4, 2, 6, 7]
  38. }
  39. ] // datasets ---------
  40. },
  41. options: {
  42. responsive: false,
  43. plugins: {
  44. title: {
  45. display: true,
  46. text: 'Chart.js v.3 Line Chart',
  47. font: { size: 14, },
  48. },
  49. legend: {
  50. display: true,
  51. position: 'top',
  52. },
  53. }, // plugins ------
  54. scales: {
  55. x: {
  56. display: true,
  57. title: {
  58. display: true,
  59. text: '西暦 年',
  60. font: { size: 14 },
  61. },
  62. },
  63. y: {
  64. display: true,
  65. title: {
  66. display: true,
  67. text: '順位',
  68. font: { size: 14 },
  69. },
  70. reverse: true, // 逆向き目盛
  71. ticks: {
  72. callback: function(value){
  73. return value+'位'; // 目盛の編集
  74. }
  75. }
  76. } // y ------
  77. } // scales -------
  78. }, // options ------
  79. }); // var myChart ------
  80. </script>
 概要 1. 'ChartID' という ID名の <canvas>要素に、getContextメソッドを呼び出します。(2行目)、
    2. getContext メソッドは描画オブジェクトを返し、ctxという名の変数に格納します。(2行目)、
    3. 【ver.3x】ではグラフ詳細は、1) type:、2) data:、3) options: の3つのパラメータで記述します。(4,5-,41-行目)
   * type: グラフの種類指定、data: データとその描画オプションの詳細、options: グラフ全体の詳細 参考

■ Chart v.3 の具体例

  表示変更や数値表示するグラフの例です。 別窓表示  リスト

■ 具体例1 (ver.2.5)

 具体例(折れ線グラフ)を見てみます。

リスト

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.js"></script>
  6. </head>
  7. <body>
  8. <div style="height:260px; width:500px; margin:0 auto; background:#eee;">
  9. <canvas id="ChartID"></canvas>
  10. </div>
  11. <script>
  12. var ctx = document.getElementById('ChartID').getContext('2d');
  13. var myChart = new Chart(ctx, {
  14. type: 'line', // 折れ線グラフを指定
  15. data: {
  16. labels: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
  17. datasets: [{
  18. label: '札幌',
  19. data: [-3.5,-2.3,2.1,7.8,14.9,16.3,20.7,23.9,19.4,10.6,2.1,-1],
  20. backgroundColor: "rgba(53,155,251,0.4)"
  21. }, {
  22. label: '東京',
  23. data: [6.1,7.2,10.1,15.4,20.2,22.4,25.4,27.1,24.4,18.7,11.4,8.9],
  24. backgroundColor: "rgba(55,153,0,0.4)"
  25. }, {
  26. label: '那覇',
  27. data: [17.4,16.9,18.7,23,25.7,28.4,29.8,29.5,28.4,27.7,23.2,20.5],
  28. backgroundColor: "rgba(255,153,0,0.4)"
  29. }]
  30. },
  31. options: {
  32. title: {
  33. display: true,
  34. fontSize: 18,
  35. text: '各地の気温 (2016)'
  36. },
  37. responsive: true,
  38. scales: {
  39. xAxes: [{
  40. display: true,
  41. stacked: false,
  42. gridLines: {
  43. display: false
  44. }
  45. }],
  46. yAxes: [{
  47. display: true,
  48. scaleLabel: {
  49. display: true,
  50. labelString: '温度',
  51. fontFamily: 'monospace',
  52. fontSize: 14
  53. },
  54. ticks: {
  55. callback: function(value){
  56. return value+'℃';
  57. }
  58. }
  59. }]
  60. }
  61. }
  62. });
  63. </script>
  64. </body>
  65. </html>

解説

 この例では、3つのデータ列を折れ線グラフ表示しています。参考
( 1行目) chartjs 対応ページは、HTML5 上で展開します
( 5行目) ここでは Chart.js を Chart.js CDN で読込みます
( 9行目) canvas要素を用意します
(12行目) 2D(平面) Contextを設定し、具体的なグラフを以下に記述します
(14行目) まず折れ線グラフを指定します
(15行~) 折れ線のデータを記述します
(31行~) グラフオプションを記述します
(32行目) タイトルの記述を指定
(39行目) X軸の記述を指定
(46行目) Y軸の記述を指定

■ 具体例2 (ver.2.8)

 csvデータを読み込んで散布図を描く例です。(csvデータは同じサーバー内に置く必要があります) 別窓表示

リスト

  1. <!DOCTYPE html>
  2. <html lang='ja'>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>コロナウイルス感染者</title>
  6. <script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.min.js'></script>
  7. <style>
  8. #chartContainer { position: relative; width:1200px; margin:0 auto; }
  9. #gcvs { background:#ffe; padding:6px; }
  10. #memo { position:absolute; top:3px;right:0px; font-size:10px; }
  11. </style>
  12. </head>
  13. <body>
  14. <div id="chartContainer">
  15. <canvas id="gcvs"> </canvas>
  16. <div id="memo"><a href="https://www.mhlw.go.jp/stf/newpage_10465.html" target="_blank">https://www.mhlw.go.jp/stf/newpage_10465.html</a><br><span style="border-bottom:0px solid #991; padding-left:0px;"> 2020/03/26</span></div>
  17. </div>
  18. <script>
  19. chartColors = { red: "#d00", blue: "#00d" }; // プロットの色指定
  20. var color = Chart.helpers.color;
  21. var dataxy1 = []; var dataxy2 = []; // 連想配列用配列準備
  22. var datainn = new Array();
  23. main();
  24. function main() {
  25. // 1) ajaxでCSVファイルをロード
  26. var req = new XMLHttpRequest();
  27. var filePath = 'Wcol2.csv'; // 読込ファイル名
  28. req.open("GET", filePath, true);
  29. req.onload = function() {
  30. // 2) CSVデータ変換の呼び出し
  31. data = csv2Array(req.responseText);
  32. // 3) chart.jsデータ準備、4) chart.js描画の呼び出し
  33. drawChart3(data);
  34. }
  35. req.send(null);
  36. }; // main() end ---------------------
  37. // 2) CSVから2次元連想配列に変換
  38. function csv2Array(str) {
  39. var csvData = [];
  40. var lines = str.split("\n"); // 各行に分割
  41. // title = lines[1].split(","); // 二行目(i=1)から項目を読みとる
  42. for (var i = 2; i < lines.length - 2; i++ ) { // 三行目(i=2)から読み込み
  43. csvData[ i - 2 ] = lines[i].split(",");
  44. };
  45. return csvData;
  46. }; // csv2Array(str) -------------------------------------
  47. function drawChart3(data) {
  48. for ( let i = 0; i < 77 ; i++ ){ // data.length -1 // 77件/212件中
  49. let datain1 = {}; let datain2 = {};
  50. datain1.x = data[i][2] ; datain1.y = data[i][6] ; // 人口 感染者
  51. datain2.x = data[i][2] ; datain2.y = data[i][7] ; // 人口 死者
  52. dataxy1[i] = datain1 ; dataxy2[i] = datain2 ; // 連想配列に取込
  53. datainn.push( data[i][1] ); // 国名
  54. }
  55. // alert( JSON.stringify( dataxy1 ) + "<br>" + datainn ); // データチェック用
  56. // 個別データに付けるラベルの定義と表示
  57. var dataLabelPlugin = {
  58. afterDatasetsDraw: function(chart) {
  59. var ctx = chart.ctx;
  60. chart.data.datasets.forEach( function( dataset, i ) {
  61. var meta = chart.getDatasetMeta(i);
  62. if (!meta.hidden) {
  63. meta.data.forEach( function(element, index ) {
  64. // Draw the text in black, with the specified font
  65. ctx.fillStyle = 'rgb(0, 0, 0)';
  66. var fontSize = 8;
  67. var fontStyle = 'normal';
  68. var fontFamily = 'Helvetica Neue';
  69. ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily);
  70. var dataString ="";
  71. if( i == 0 ){ dataString = datainn[index].toString(); };// 0列データに付加
  72. if( i == 1 ){ dataString = datainn[index].toString(); };// 1列データに付加
  73. ctx.textAlign = 'center';
  74. ctx.textBaseline = 'middle';
  75. var padding = 3;
  76. var position = element.tooltipPosition();
  77. ctx.fillText(dataString, position.x, position.y - (fontSize / 2) - padding);
  78. });
  79. } // if ここまで ---------------------------------
  80. ctx.font = "16px 'MS Bゴシック'";
  81. ctx.fillText("致死率 0.001%",1090,155);
  82. ctx.stroke();
  83. ctx.beginPath();
  84. ctx.setLineDash([5, 5]);
  85. ctx.moveTo(226,543);
  86. ctx.lineTo(1185,141);
  87. ctx.stroke();
  88. }); // chart.data.datasets.forEach ここまで ------------------------
  89. } // afterDatasetsDraw ここまで ------------------------------------
  90. }; // dataLabelPlugin ここまで ---------------------------
  91. var ctx = document.getElementById('gcvs').getContext('2d'); // chart.js の実行
  92. window.myScatter = Chart.Scatter(ctx, {
  93. data: {
  94. datasets:[{
  95. label: "感染者",
  96. borderColor: window.chartColors.red,
  97. backgroundColor: color(window.chartColors.red).alpha(0.2).rgbString(),
  98. pointRadius: 2,
  99. data: dataxy1 // プロットデータ ---------------------
  100. },{
  101. label: "死亡者",
  102. borderColor: window.chartColors.blue,
  103. backgroundColor: color(window.chartColors.blue).alpha(0.2).rgbString(),
  104. pointRadius: 2,
  105. data: dataxy2 // プロットデータ ---------------------
  106. }]
  107. },
  108. options:{
  109. // responsive: false, // 図サイズをコンテナに合わす https://misc.0o0o.org/chartjs-doc-ja/general/responsive.html
  110. title: { // 図のタイトル表示
  111. display: true,
  112. fontSize: 20,
  113. text: "コロナウイルス 感染者・死亡者 (対人口)"
  114. },
  115. legend: {
  116. // display: false, // 凡例非表示
  117. },
  118. scales: {
  119. xAxes: [
  120. {
  121. type: 'logarithmic', // 対数軸
  122. ticks: {
  123. min: 2, // 軸の最小値
  124. max: 200000, // 軸の最大値
  125. // stepSize: 5 // 目盛り・補助線の間隔
  126. },
  127. scaleLabel: { // ★横軸ラベル設定
  128. display: true,
  129. fontSize: 16,
  130. labelString: '人口 (万人)',
  131. // 文字の色 fontColor: 'black',
  132. },
  133. }
  134. ],
  135. yAxes: [ // Y軸の設定
  136. {
  137. type: 'logarithmic', // 対数軸
  138. ticks: {
  139. min: 1, // 軸の最小値
  140. max: 100000, // 軸の最大値
  141. // stepSize: 50 // 目盛り・補助線の間隔
  142. },
  143. scaleLabel: { // ラベルの表示
  144. display: true,
  145. fontSize: 16,
  146. labelString: '人数'
  147. }
  148. }
  149. ]
  150. }
  151. },
  152. plugins: [dataLabelPlugin] // 各点にラベルを付加
  153. });// myScatter ここまで ---------------------------------
  154. }; // drawChart3 ここまで ----------------------------------
  155. </script>
  156. </body>
  157. </html>

csv データ

,https://ecodb.net/ranking/imf_lp.html,,,,2020/3/26,https://www.mhlw.go.jp/stf/newpage_10465.html,,,
No.,名称,単位: 万人,,#,国・地域,感染者,死亡者,,
23,イタリア,6048,,23,イタリア,74386,7503,,
30,スペイン,4645,,27,スペイン,49515,3647,,
1,中国,139538,,1,中国,81285,3287,,
18,イラン,8236,,30,イラン,27017,2077,,
22,フランス,6473,,15,フランス,25233,1331,,
3,アメリカ,32735,,13,アメリカ,65285,1031,,
21,イギリス,6644,,24,イギリス,9529,422,,
66,オランダ,1718,,51,オランダ,6412,356,,
17,ドイツ,8290,,16,ドイツ,37323,206,,
77,ベルギー,1140,,28,ベルギー,4937,178,,
27,韓国,5164,,5,韓国,9241,131,,
95,スイス,848,,40,スイス,9765,103,,
19,トルコ,8200,,114,トルコ,2433,59,,
4,インドネシア,26416,,68,インドネシア,790,58,,
5,ブラジル,20850,,42,ブラジル,2433,57,,
10,日本,12650,,4,日本,1292,45,,
84,ポルトガル,1028,,70,ポルトガル,2995,43,,
86,スウェーデン,1023,,26,スウェーデン,2510,42,,
12,フィリピン,10660,,21,フィリピン,636,38,,
38,カナダ,3699,,14,カナダ,3385,35,,
110,デンマーク,578,,49,デンマーク,1861,34,,
93,オーストリア,889,,39,オーストリア,5560,31,,
67,エクアドル,1702,,63,エクアドル,1173,29,,
36,イラク,3812,,37,イラク,346,29,,
81,ギリシャ,1074,,46,ギリシャ,821,22,,
13,エジプト,9698,,29,エジプト,456,21,,
32,アルジェリア,4258,,38,アルジェリア,302,21,,
187,サンマリノ,3,,52,サンマリノ,208,21,,
43,マレーシア,3239,,11,マレーシア,1796,19,,
60,ルーマニア,1952,,48,ルーマニア,906,17,,
37,ポーランド,3798,,82,ポーランド,1051,14,,
115,ノルウェー,532,,47,ノルウェー,2916,12,,
2,インド,133422,,22,インド,657,12,,
85,ドミニカ共和国,1027,,67,ドミニカ共和国,392,10,,
89,ハンガリー,978,,80,ハンガリー,226,10,,
119,アイルランド,489,,64,アイルランド,1564,9,,
44,ペルー,3216,,95,ペルー,480,9,,
53,オーストラリア,2517,,12,オーストラリア,2423,8,,
163,ルクセンブルク,60,,61,ルクセンブルク,1333,8,,
6,パキスタン,20096,,44,パキスタン,1063,8,,
124,パナマ,416,,109,パナマ,443,8,,
31,アルゼンチン,4456,,75,アルゼンチン,387,8,,
82,チェコ,1061,,65,チェコ,1654,6,,
108,レバノン,609,,32,レバノン,333,6,,
40,モロッコ,3522,,78,モロッコ,225,6,,
141,スロベニア,207,,83,スロベニア,528,5,,
11,メキシコ,12474,,59,メキシコ,405,5,,
75,チュニジア,1166,,79,チュニジア,173,5,,
133,アルバニア,287,,105,アルバニア,146,5,,
33,ウクライナ,4204,,77,ウクライナ,145,5,,
8,バングラデシュ,16488,,99,バングラデシュ,39,5,,
20,タイ,6779,,9,タイ,934,4,,
28,コロンビア,4983,,94,コロンビア,470,4,,
147,バーレーン,148,,34,バーレーン,419,4,,
99,香港,749,,2,香港,410,4,,
103,セルビア,699,,91,セルビア,384,4,,
135,リトアニア,281,,53,リトアニア,274,4,,
58,ブルキナファソ,1975,,106,ブルキナファソ,146,4,,
47,ガーナ,2956,,129,ガーナ,93,4,,
94,イスラエル,888,,31,イスラエル,2369,3,,
61,チリ,1875,,76,チリ,1142,3,,
113,フィンランド,551,,20,フィンランド,880,3,,
102,ブルガリア,700,,101,ブルガリア,242,3,,
,北マケドニア,207.7,,45,北マケドニア,177,3,,
130,ボスニア・ヘルツェゴビナ,350,,85,ボスニア・ヘルツェゴビナ,176,3,,
156,キプロス,86,,104,キプロス,132,3,,
101,パラグアイ,705,,98,パラグアイ,37,3,,
41,サウジアラビア,3341,,73,サウジアラビア,900,2,,
171,アイスランド,35,,55,アイスランド,737,2,,
112,シンガポール,564,,7,シンガポール,631,2,,
83,アラブ首長国連邦,1043,,19,アラブ首長国連邦,333,2,,
55,台湾,2359,,6,台湾,235,2,,
117,コスタリカ,502,,96,コスタリカ,201,2,,
87,アゼルバイジャン,994,,56,アゼルバイジャン,93,2,,
39,アフガニスタン,3602,,36,アフガニスタン,84,2,,
14,コンゴ民主共和国(旧ザイール),9503,,112,コンゴ民主共和国(旧ザイール),48,2,,
152,モーリシャス,127,,159,モーリシャス,48,2,,
9,ロシア,14680,,25,ロシア,651,1,,
125,クロアチア,409,,41,クロアチア,442,1,,
114,スロバキア,544,,92,スロバキア,216,1,,
,アンドラ,7.7,,69,アンドラ,188,1,,
128,モルドバ,354,,100,モルドバ,149,1,,
54,カメルーン,2488,,89,カメルーン,75,1,,
145,コソボ,179,,142,コソボ,63,1,,
,キューバ,1148,,120,キューバ,57,1,,
162,モンテネグロ,62,,153,モンテネグロ,52,1,,
7,ナイジェリア,19588,,54,ナイジェリア,46,1,,
134,ジャマイカ,286,,113,ジャマイカ,25,1,,
65,グアテマラ,1726,,126,グアテマラ,24,1,,
142,ガボン,205,,128,ガボン,6,1,,
,キュラソー,14.2,,139,キュラソー,6,1,,
159,ガイアナ,78,,116,ガイアナ,5,1,,
,ケイマン諸島(英領),5.4,,119,ケイマン諸島(英領),5,1,,
139,ガンビア,228,,158,ガンビア,3,1,,
70,ジンバブエ,1464,,170,ジンバブエ,3,1,,
34,スーダン,4199,,122,スーダン,3,1,,
,モントセラト(英領),0.6,,164,モントセラト(英領),1,1,,
24,南アフリカ,5794,,86,南アフリカ,709,0,,
136,カタール,272,,60,カタール,537,0,,
149,エストニア,132,,50,エストニア,404,0,,
132,アルメニア,297,,66,アルメニア,265,0,,
144,ラトビア,193,,71,ラトビア,221,0,,
118,ニュージーランド,493,,58,ニュージーランド,205,0,,
120,クウェート,457,,33,クウェート,195,0,,
129,ウルグアイ,351,,132,ウルグアイ,189,0,,
88,ヨルダン,990,,74,ヨルダン,172,0,,
15,ベトナム,9458,,10,ベトナム,141,0,,
166,マルタ,48,,97,マルタ,129,0,,
167,ブルネイ,44,,103,ブルネイ,109,0,,
57,スリランカ,2169,,18,スリランカ,102,0,,
123,オマーン,418,,35,オマーン,99,0,,
68,セネガル,1630,,72,セネガル,99,0,,
69,カンボジア,1625,,17,カンボジア,96,0,,
49,ベネズエラ,2886,,127,ベネズエラ,91,0,,
90,ベラルーシ,949,,57,ベラルーシ,86,0,,
63,カザフスタン,1840,,131,カザフスタン,81,0,,
52,コートジボワール,2561,,115,コートジボワール,80,0,,
127,ジョージア,373,,43,ジョージア,75,0,,
42,ウズベキスタン,3257,,146,ウズベキスタン,60,0,,
148,トリニダード・トバゴ,138,,121,トリニダード・トバゴ,60,0,,
,パレスチナ,505,,84,パレスチナ,60,0,,
,リヒテンシュタイン,3.9,,81,リヒテンシュタイン,51,0,,
107,キルギス,626,,155,キルギス,44,0,,
74,ルワンダ,1209,,137,ルワンダ,41,0,,
91,ホンジュラス,943,,111,ホンジュラス,36,0,,
78,ボリビア,1138,,110,ボリビア,32,0,,
,モナコ,3.9,,62,モナコ,31,0,,
160,マカオ,67,,3,マカオ,30,0,,
29,ケニア,4803,,125,ケニア,28,0,,
,ガーンジー(英領),6.6,,117,ガーンジー(英領),23,0,,
97,トーゴ,799,,90,トーゴ,23,0,,
,マン島(英王室属領),8,,174,マン島(英王室属領),23,0,,
51,マダガスカル,2633,,165,マダガスカル,19,0,,
172,バルバドス(英領),29,,154,バルバドス(英領),18,0,,
,ジャージー(英領),9.6,,118,ジャージー(英領),16,0,,
,ジブラルタル(英領),3.2,,87,ジブラルタル(英領),15,0,,
35,ウガンダ,3882,,175,ウガンダ,14,0,,
170,モルディブ,37,,102,モルディブ,13,0,,
,アルバ,10.3,,133,アルバ,12,0,,
16,エチオピア,9414,,124,エチオピア,12,0,,
64,ザンビア,1777,,156,ザンビア,12,0,,
25,タンザニア,5468,,149,タンザニア,12,0,,
154,ジブチ,105,,157,ジブチ,11,0,,
,ニューカレドニア,27.5,,176,ニューカレドニア,10,0,,
131,モンゴル,324,,108,モンゴル,10,0,,
104,エルサルバドル,664,,161,エルサルバドル,9,0,,
150,赤道ギニア,131,,147,赤道ギニア,9,0,,
164,スリナム,59,,140,スリナム,8,0,,
80,ハイチ,1112,,166,ハイチ,8,0,,
182,セーシェル,10,,135,セーシェル,7,0,,
184,ドミニカ国,7,,183,ドミニカ国,7,0,,
137,ナミビア,241,,134,ナミビア,7,0,,
56,ニジェール,2244,,168,ニジェール,7,0,,
,バミューダ(英領),6.5,,181,バミューダ(英領),6,0,,
76,ベナン,1149,,151,ベナン,6,0,,
,シリア,1795.2,,177,シリア,5,0,,
169,バハマ,38,,152,バハマ,5,0,,
155,フィジー,89,,160,フィジー,5,0,,
46,モザンビーク,3034,,178,モザンビーク,5,0,,
153,エスワティニ,110,,138,エスワティニ,4,0,,
109,エリトリア,605,,172,エリトリア,4,0,,
165,カーボヴェルデ,55,,171,カーボヴェルデ,4,0,,
71,ギニア,1329,,123,ギニア,4,0,,
122,コンゴ共和国,446,,143,コンゴ共和国,4,0,,
,バチカン,0.08,,93,バチカン,4,0,,
116,中央アフリカ,508,,145,中央アフリカ,4,0,,
48,アンゴラ,2925,,167,アンゴラ,3,0,,
183,アンティグア・バーブーダ,9,,130,アンティグア・バーブーダ,3,0,,
176,セントルシア,18,,136,セントルシア,3,0,,
73,チャド,1249,,162,チャド,3,0,,
50,ネパール,2809,,8,ネパール,3,0,,
26,ミャンマー,5283,,182,ミャンマー,3,0,,
100,ラオス,706,,184,ラオス,3,0,,
121,リベリア,446,,148,リベリア,3,0,,
146,ギニアビサウ,174,,186,ギニアビサウ,2,0,,
185,セントクリストファー・ネーヴィス,6,,188,セントクリストファー・ネーヴィス,2,0,,
106,ニカラグア,646,,163,ニカラグア,2,0,,
158,ブータン,82,,88,ブータン,2,0,,
62,マリ,1854,,187,マリ,2,0,,
126,モーリタニア,397,,141,モーリタニア,2,0,,
179,グレナダ,11,,179,グレナダ,1,0,,
178,セントビンセント・グレナディーン,11,,144,セントビンセント・グレナディーン,1,0,,
,ソマリア,1474,,150,ソマリア,1,0,,
,タークス・カイコス諸島(英領),3.1,,185,タークス・カイコス諸島(英領),1,0,,
,チャンネル諸島(英王室属領),16.4,,107,チャンネル諸島(英王室属領),1,0,,
96,パプアニューギニア,843,,169,パプアニューギニア,1,0,,
168,ベリーズ,40,,180,ベリーズ,1,0,,
105,リビア,651,,189,リビア,1,0,,
151,東ティモール,127,,173,東ティモール,1,0,,
45,イエメン,3082,,,イエメン,,,,
177,キリバス,12,,,キリバス,,,,
157,コモロ,85,,,コモロ,,,,
175,サモア,20,,,サモア,,,,
174,サントメ・プリンシペ,22,,,サントメ・プリンシペ,,,,
98,シエラレオネ,757,,,シエラレオネ,,,,
161,ソロモン諸島,63,,,,,,,*
92,タジキスタン,911,,,タジキスタン,,,,
190,ツバル,1,,,ツバル,,,,
111,トルクメニスタン,577,,,トルクメニスタン,,,,
181,トンガ,10,,,トンガ,,,,
189,ナウル,1,,,ナウル,,,,
173,バヌアツ,29,,,バヌアツ,,,,
188,パラオ,2,,,パラオ,,,,
79,ブルンジ,1119,,,ブルンジ,,,,
138,ボツワナ,234,,,ボツワナ,,,,
186,マーシャル,6,,,マーシャル,,,,
140,マケドニア,208,,,マケドニア,,,,
59,マラウイ,1972,,,マラウイ,,,,
180,ミクロネシア,10,,,ミクロネシア,,,,
143,レソト,203,,,レソト,,,,
72,南スーダン,1298,,,南スーダン,,,,
,その他,,,190,その他,712,10,,

■ 具体例3 (ver.2.5)

  関数値を表示するグラフを描く例です。 別窓表示
  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.js"></script>
  6. </head>
  7. <body>
  8. <div style="height:560px; width:1000px; margin:0 auto; background:#eee;">
  9. <canvas id="ChartID"></canvas><br>
  10. <div> *当初(0-30日)の実効再生産数 Rt=1.2</div><br>
  11.  <a href="https://uub.jp/cvd/cvd5.html">実効再生産数</a>: [直近区間(7日)の新規感染者数/その前区間(7日)の新規感染者数]^[平均世代時間:5日/報告区間間隔:7日]
  12. </div>
  13. <script>
  14. var pltlb = new Array();
  15. var plt01 = new Array(); var plt02 = new Array(); var plt03 = new Array();
  16. var plt04 = new Array();
  17. var sedaikan = 5; // 世代間隔 5日
  18. var sedain1 = 6; // 拡大前世代数 6x5=30日
  19. var sedainmx = 19; // 最大表示世代繰り返し数+1 18x5=90日間
  20. var y0 = 100; // 感染者数の初期値
  21. var rep00 = 1.2; var yy00 = y0; // 前世代の実効再生産数
  22. var rep01 = 1.05; var yy01 = y0; // 新評価実効再生産数
  23. var rep02 = 0.9; var yy02 = y0; // 新評価実効再生産数
  24. var rep03 = 0.8; var yy03 = y0; // 新評価実効再生産数
  25. var rep04 = 0.7; var yy04 = y0; // 新評価実効再生産数
  26. for ( i = 0; i<sedainmx; i++ ) {
  27. pltlb[i] = i * sedaikan ;
  28. plt01[i] = yy01;
  29. plt02[i] = yy02;
  30. plt03[i] = yy03;
  31. plt04[i] = yy04;
  32. if ( i < sedain1 ) { // 拡大前世代の時 前実効再生産数適用
  33. yy01 = yy01 * rep00;
  34. yy02 = yy02 * rep00;
  35. yy03 = yy03 * rep00;
  36. yy04 = yy04 * rep00;
  37. } else { // 拡大世代の時 新実効再生産数適用
  38. yy01 = yy01 * rep01;
  39. yy02 = yy02 * rep02;
  40. yy03 = yy03 * rep03;
  41. yy04 = yy04 * rep04;
  42. }
  43. }
  44. var ctx = document.getElementById('ChartID').getContext('2d');
  45. var myChart = new Chart(ctx, {
  46. type: 'line', // 折れ線グラフを指定
  47. data: {
  48. labels: pltlb,
  49. datasets: [{
  50. fill: false, // 下方の塗りつぶしせず
  51. tension: 0.2,
  52. label: 'Rt='+ rep01, // rep01のケース
  53. data: plt01,
  54. backgroundColor: "rgba(251,55,193,0.4)"
  55. }, {
  56. fill: false, // 下方の塗りつぶしせず
  57. tension: 0.2,
  58. label: 'Rt='+ rep02, // rep02のケース
  59. data: plt02,
  60. backgroundColor: "rgba(255,193,0,0.3)"
  61. }, {
  62. // fill: false, // 下方の塗りつぶしせず
  63. tension: 0.2,
  64. label: 'Rt='+ rep03, // rep03のケース
  65. data: plt03,
  66. backgroundColor: "rgba(53,155,251,0.3)"
  67. }, {
  68. // fill: false, // 下方の塗りつぶしせず
  69. tension: 0.2,
  70. label: 'Rt='+ rep04, // rep04のケース
  71. data: plt04,
  72. backgroundColor: "rgba(0,255,193,0.4)"
  73. }]
  74. },
  75. options: {
  76. title: {
  77. display: true,
  78. fontSize: 18,
  79. text: '新型コロナ陽性率シミュレーション (covid19)'
  80. },
  81. responsive: true,
  82. scales: {
  83. xAxes: [{
  84. display: true,
  85. scaleLabel: {
  86. display: true,
  87. labelString: '日数',
  88. // fontFamily: 'monospace',
  89. fontSize: 14
  90. },
  91. stacked: false,
  92. gridLines: {
  93. display: false
  94. }
  95. }],
  96. yAxes: [{
  97. // type: 'logarithmic', // 対数軸
  98. ticks: {
  99. min: 0, // 軸の最小値
  100. // max: 100000, // 軸の最大値
  101. // stepSize: 50 // 目盛り・補助線の間隔
  102. },
  103. display: true,
  104. scaleLabel: {
  105. display: true,
  106. labelString: '感染者数',
  107. // fontFamily: 'monospace',
  108. fontSize: 14
  109. },
  110. ticks: {
  111. callback: function(value){
  112. return value; // return value+'℃'; //
  113. }
  114. }
  115. }]
  116. }
  117. }
  118. });
  119. </script>
  120. </body>
  121. </html>

■ 参考サイト