- csv ファイルを読み込んで Google Charts を表示
ここでは csvファイルを読み込んで Google Charts を表示する例を作ってみました。
*引用データ元
- csvファイル名を指定して読み込み、読み込んだデータを chartデータとして整形します。
参考1
参考2
- chartデータを Google Chart として表示します。
参考サイト1
参考サイト2
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>File 選択表示</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script>
var ma = new Array(); var data = new Array(); var res = new Array();
// 1) ファイル(fname)を読み込む
function getValue(){ // onload 時実行
var fname = 'data/boueki.csv'; // 利用ファイル名を指定 --------------------
// データ出典 http://www.mlit.go.jp/hakusyo/mlit/h27/hakusho/h28/html/n1114000.html
// 2) 該当 csvファイルから chartデータに変換 getCsv( fname ) ----------------
ma = getCsv( fname ); // → function: getCsv( fname )
// 3) 該当データ(ma)をgoogle.chartsで表示 → drawVisualization() ------------
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawVisualization);
}; // end of getValue(idname) ------------------------------------------
// 2) 該当名(url)の csvファイルをchartデータとして整形
function getCsv(url){ //CSVファイルを文字列で取得。
var txt = new XMLHttpRequest();
txt.open('get', url, false);
txt.send();
// 改行ごとに配列化
var arr = txt.responseText.split('\n');
// 1次元配列を2次元配列に変換
res = [];
res[0] = arr[0].split(',');
for(var i = 1; i < arr.length; i++){
// 空白行が出てきた時点で終了
if(arr[i] == '') break;
// ","ごとに配列化
res[i] = arr[i].split(',');
for(var i2 = 1; i2 < res[i].length; i2++){
// 数字の場合は「' "」を削除 ・・・ 2列目以降に適用
if(res[i][i2].match(/\-?\d+(.\d+)?(e[\+\-]d+)?/)){
res[i][i2] = parseFloat(res[i][i2].replace(/'?"?/g, ""));
}
}
};
return res;
}; // end of getCsv(url) ---------------------------------------------
// 3) 該当データ(ma)を google.chartsで表示
function drawVisualization() {
data = google.visualization.arrayToDataTable( ma );
var options = {
title : '貿易額推移',
// 出典 http://www.mlit.go.jp/hakusyo/mlit/h27/hakusho/h28/html/n1114000.html
titleTextStyle : { color: '#333', fontSize: 20 },
vAxis: {title: '金額 [兆円]'},
hAxis: {title: ma[0][0] },
seriesType: 'bars', // 全体は棒グラフ(default='line')
legendTextStyle : { color: '#333', fontSize: 12 },
isStacked: true // 積み上げ棒グラフ
};
var chart = new google.visualization.ComboChart(document.getElementById('graph'));
chart.draw(data, options);
}; // end of drawVisualization() --------------------------------------
</script>
<style>
body { background:#efe; }
.waku1 { text-align:center; font-size:14px; width:1000px; height:500px; margin:0 auto; padding:0; background:#eef; }
.waku1 h3{ margin:3px; }
#graph { width:100%; height:99%; }
</style>
</head>
<body onload="getValue()">
<div class="waku1">
<h3>csv データを読み込みグラフ表示</h3>
<div id="graph">ここにグラフを表示</div>
</div>
</body>
</html>
( 7行目) Google Chartsを利用するため、Google Charts のライブラリを読み込みます
(11行目) 起動時実行する getValue() を定義します
(12行目) 利用するファイルの url を指定します
(15行目) getCsv() でデータファイル fname を chartデータ ma に変換します
(17行目) チャートを表示するため 'current'バージョンの corechartパッケージを呼び出します。
(18行目) JavaScript function (drawVisualization) のコールバックを実行します
(21行目-) CSVファイルを chartデータ用文字列で取得する functionを記述します
(22行目) XMLHttpRequest オブジェクトを作成します
(23行目) { 'get', url, 同期実行(false) } で open() 動作を設定します。
(24行目) 該リクエストを送信します。
(26行目) 文字列をまず1次元配列に分解します。
(29行目) 一列目を、2次元配列に分解します。
(34行目) 二列目以降を、2次元配列に分解します。
(38行目) 各行の2列目以降のデータを数値データにします。
(45行目-) チャートの詳細を指定する function (drawVisualization) を記述します。
(53行目) 棒グラフを表示するように指定します。
(55行目) 棒グラフを積み上げで表示するように指定します。
(57行目) ComboChartを id='graph' 領域に表示するように指定します。
(58行目) chart を表示します。
(68行目) onload 時 getValue() を実行します。
(71行目) グラフを表示エリア id='graph' を指定しました。
年度,中国,韓国,ASEAN 10ケ国,米国,EU 27ケ国
1995,12.4,4.6,11.7,18.4,11.2
1996,14.3,4.9,13.7,20.8,12.2
1997,16.1,4.9,14.5,23.3,13.4
1998,15.3,3.6,11.3,24.2,14.4
1999,15.0,4.4,11.4,22.2,13.3
2000,18.1,5.5,13.8,23.1,13.5
2001,18.5,5.2,13.2,22.4,13.2
2002,21.0,5.5,13.4,22.1,13.1
2003,24.2,6.1,13.9,20.2,14.0
2004,28.5,7.2,15.2,20.5,15.7
2005,31.8,7.8,16.4,21.9,16.1
2006,36.5,9.0,18.2,24.8,17.9
2007,40.2,9.6,20.5,25.2,20.1
2008,39.2,9.2,21.8,22.3,18.7
2009,29.9,6.5,14.8,14.2,12.3
2010,37.0,8.0,18.7,16.3,13.4
2011,37.0,8.4,19.8,15.9,14.0
2012,35.5,8.1,20.6,17.3,13.1
2013,40.5,9,22.3,19.7,14.6
2014,43.6,9.0,23.3,21.2,15.8
- 「Feeding CSV to Google Chart」
Feeding CSV to Google Chartには、jquery.csv.jsを利用する例があり、次の3つの要素から構成されます。 関連
- csvファイル(ifr.csv;データファイル)
表示対象の csvファイルは読込プログラムに合わせて構成されます。通常一行目に項目リスト(例: year,daily)、二行目以後に表示データ(例: 2008,26.541\n2009,24.748\n・・・・・)を記述します。
- jsファイル(jquery.csv.min.js/jquery.min.js)
「Feeding CSV to Google Chart」では jquery.csv.min.js で表示対象の csvファイルをグラフ表示用の配列に変換します。また jquery を使うために jquery.min.js を必要とします。
- htmlファイル(グラフ表示ファイル)
グラフ表示用配列を Google Chart で表示します。サンプル
グラフの種別は「chartType:'*****'」で指定します。(例: chartType:'LineChart'・・・線グラフ(default), chartType:'BarChart'・・・横棒グラフ, chartType:'ComboChart'・・・複合グラフ・・・・)
- csvファイルを chart.jsでグラフ化
chart.jsでグラフ化する例もあります。
- csvファイル(data.csv;データファイル)
表示対象の csvファイルは表示データ(例: January, -10.4, -5.5\nFeburary, -30.3, 1\n・・・・・)のみで構成されます。
- jsファイル(mychart.js)
jsファイルは mychart.js 一つで構成されています。
これを読み込むと main() が起動します。main() では、
1) CSVファイルをロードし、
2) csv2Array() で2次元配列に変換し、
3) drawBarChart() で chart.js 用の dataset配列を用意し、
4) chart.jsでグラフを表示します。
- htmlファイル(グラフ表示ファイル)
htmlで mychart.js と Chart.js を使って、グラフ表示する canvas を指定します。サンプル
以下のように複合グラフを表示することも出来ます。 参考1 参考2
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<style>
#wrap{ width:1000px; height:500px; margin:0 auto; }
canvas#myChart{ width: 100%; height:100%; background:#ffe; }
</style>
<script>
var title =[];
main();
function main() {
// 1) ajaxでCSVファイルをロード
var req = new XMLHttpRequest();
var filePath = 'worker.csv'; // 読込ファイル名
req.open("GET", filePath, true);
req.onload = function() {
// 2) CSVデータ変換の呼び出し
data = csv2Array(req.responseText);
// 3) chart.jsデータ準備、4) chart.js描画の呼び出し
drawBarChart(data);
}
req.send(null);
}; // main() end ---------------------
// 2) CSVから2次元配列に変換
function csv2Array(str) {
var csvData = [];
var lines = str.split("\n");
title = lines[0].split(","); // 一行目(i=0)から項目を読みとる
for (var i = 1; i < lines.length; ++i) { // 一行目(i=0: 項目行)は読み込まない
var cells = lines[i].split(",");
csvData.push(cells);
}; // alert(title);
return csvData;
}
function drawBarChart(data) {
// 3)chart.jsのdataset用の配列を用意
var tmpLabels = [], tmpData1 = [], tmpData2 = [], tmpData3 = [], tmpData4 = [], tmpData5 = [], tmpData6 = [], tmpData7 = [], tmpData8 = [], tmpData9 = [], tmpData10 = [], tmpData11 = [], tmpData12 = [], tmpData13 = [], tmpData14 = [], tmpData15 = [], tmpData16 = [], tmpData17 = [];
for (var row in data) { // 各行毎に読み込み
tmpLabels.push(data[row][0])
tmpData1.push(data[row][3])
tmpData2.push(data[row][4])
tmpData3.push(data[row][5])
tmpData4.push(data[row][6])
tmpData5.push(data[row][7])
tmpData6.push(data[row][8])
tmpData7.push(data[row][9])
tmpData8.push(data[row][10])
tmpData9.push(data[row][11])
tmpData10.push(data[row][12])
tmpData11.push(data[row][13])
tmpData12.push(data[row][14])
tmpData13.push(data[row][15])
tmpData14.push(data[row][16])
tmpData15.push(data[row][17])
tmpData16.push(data[row][18])
tmpData17.push(data[row][19])
}; // --------------
// 4)chart.jsで描画
var ctx = document.getElementById("myChart").getContext("2d");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: tmpLabels, // 横軸ラベル
datasets: [
{ label:title[3], data: tmpData1, backgroundColor:"rgba(240,100,100,0.5)",stack:1 },
{ label:title[4], data: tmpData2, backgroundColor:"rgba(100,240,100,0.5)", stack:1 },
{ label:title[5], data: tmpData3, backgroundColor:"rgba(100,100,240,0.5)", stack:1 },
{ label:title[6], data: tmpData4, backgroundColor:"rgba(240,200,100,0.5)", stack:1 },
{ label:title[7], data: tmpData5, backgroundColor:"rgba(100,240,200,0.5)", stack:1 },
{ label:title[8], data: tmpData6, backgroundColor:"rgba(200,100,240,0.5)", stack:1 },
{ label:title[9], data: tmpData7, backgroundColor:"rgba(240,100,50,0.5)", stack:1 },
{ label:title[10], data: tmpData8, backgroundColor:"rgba(50,240,100,0.5)", stack:1 },
{ label:title[11], data: tmpData9, backgroundColor:"rgba(200,50,50,0.5)", stack:1 },
{ label:title[12], data: tmpData10, backgroundColor:"rgba(50,200,50,0.5)", stack:1 },
{ label:title[13], data: tmpData11, backgroundColor:"rgba(50,50,200,0.5)", stack:1 },
{ label:title[14], data: tmpData12, backgroundColor:"rgba(150,100,0,0.5)", stack:1 },
{ label:title[15], data: tmpData13, backgroundColor:"rgba(0,150,100,0.5)", stack:1 },
{
type: 'line', //折れ線グラフを適用
label:title[16],
borderColor: "rgba(55,55,250,0.6)",
lineTension: 0, // 直線
fill: false, //エリア塗りつぶしせず
data: tmpData14,
stack:false,
},
{ type:'line', fill:false, lineTension: 0, borderColor:"rgba(55,55,250,1)", label:title[17], data:tmpData15 },
{ type:'line', fill:false, lineTension: 0, borderColor:"rgba(250,55,55,0.6)", label:title[18], data:tmpData16 },
{ type:'line', fill:false, lineTension: 0, borderColor:"rgba(250,55,55,1)", label:title[19], data:tmpData17 }
]
},
options: {
title: {
display: true,
text: '就業者年代別構成',
padding:8,
fontSize: 20
},
scales: {
xAxes: [{
scaleLabel: { // 軸ラベル設定
display: true, // 表示設定
labelString: '年次', // ラベル
fontSize: 16 // フォントサイズ
},
categoryPercentage:0.6 // 棒幅
}],
yAxes: [{
scaleLabel: { //軸ラベル設定
display: true, //表示設定
labelString: '人数[万人]', //ラベル
fontSize: 16 //フォントサイズ
}
}]
}
}
});
}; // drawBarChart(data) end ---------------------
</script>
</head>
<body>
<div id="wrap">
<canvas id="myChart" >ここにチャート表示</canvas>
</div>
</body>
</html>
( 5行目) Chart.min.jsを利用するため、chart.jsをインクルードします
( 8行目) グラフを描画する canvas域を定義します
(16行目) サーバーと HTTP通信を行うため XMLHttpRequestオブジェクトを作ります
(18行目) open() メソッドで HTTPメソッド、アクセス先 URL、非同期実行を指定します
(21行目) responseTextで csv形式の文字列データを受取ったら、配列 dataに変換します
(23行目) 配列 dataのデータでチャートを描画します
(25行目) sendメソッドでリクエストを送信,引数は GETなので nullを渡す。
(29行目-) CSVから配列に変換します。
(32行目) 1行目から項目を読みとる。
(33行目-) 2行目以降から dataの各行配列を取得します。
(40行目-) data配列からグラフを描画します。
(43行目-) 各行毎のデータを読み込みます。
(65行目-) <canvas>要素への参照を取得し、getContextメソッドを呼び出します。
(66行目-) チャートオブジェクトを作成し、type及びdataプロパティを記述してゆきます。
(67行目) 今回は棒グラフを利用します。
(68行目-) dataプロパティの詳細を記述します。
(69行目) 横軸ラベルに対応する配列を渡します。
(71行目-) 各項目の、ラベル、データ値、色、積み上げを指定しました。
(85行目) グラフの一部に折れ線グラフを指定するため、'line'を記述しました。
(93行目-) 折れ線グラフをさらに追加します。
(98行目-) optionsプロパティを記述します。
(99行目-) グラフタイトルを指定します。
(106行目-) x軸の書式等を記述します。
(114行目-) y軸の書式等を記述します。
(130行目) <canvas>要素を設置します。
年,人口/万人,総有業者,15~19歳,20~24,25~29,30~34,35~39,40~44,45~49,50~54,55~59,60~64,65~69,70~74,75歳以上,男人口,男有業数,女人口,女有業数
1956,6041.9,3980.2,396.5,595.5,549.1,475.5,393.1,395.9,350.2,282.4,223.9,154.4,155.6,...,...,2902.3,2426,3139.7,1554.2
1959,6432.2,4133,385,565.6,558.3,544.7,434,387.1,375.6,299.2,241.4,165.1,168.2,...,...,3096.5,2589,3335.7,1543.9
1962,6722.2,4285.5,388.7,649.8,576.4,558.7,484,377.3,357.8,315.5,234.7,176.2,101.2,65,...,3239.8,2688.1,3482.3,1597.4
1965,7258.4,4477.9,352.1,681,563.8,566.8,547.7,445.4,362.8,322.4,260.7,186.2,115,73.9,...,3505.1,2819.8,3753.3,1658.1
1968,7655.1,4900.6,389.5,693.6,598.4,595.9,604.8,539.6,401.9,353.2,289.4,204.1,135.4,64.2,30.7,3703.2,3025.3,3951.9,1875.4
1971,7941.9,5063,271.6,806.9,585,587,625.7,584.5,477.3,360.5,304.8,221.3,138.2,68.4,31.9,3844.9,3159.8,4097,1903.2
1974,8281.5,5134.1,189.5,674.8,666.1,636.1,616.7,622.2,552,403,297.5,235.3,141.2,67.5,32.1,3998,3251.2,4283.6,1882.8
1977,8612.6,5364.9,156.8,571.8,770.9,633.2,660.2,661.9,605.1,482.9,323.6,238.4,151.2,71.5,37.3,4176.3,3354.7,4436.3,2010.3
1979,8829.7,5473.7,134.6,539.4,670.5,722.3,716.9,658.1,633,537.2,359.7,228.6,158.2,75.5,39.7,4282.5,3401.7,4547.2,2072
1982,9126.4,5788.8,152.2,552.5,596.2,800.6,715.5,717.5,676.4,588.2,433,249,169.2,89.1,49.4,4425.6,3508.3,4700.8,2280.5
1987,9733.7,6050.2,162.1,596,582,601.6,857.1,747.7,709.5,639.4,507,311.6,171.9,100.6,63.7,4723.8,3637.2,5010,2413
1992,10293.8,6575.6,171.9,701.1,648.9,588,660.5,914.5,761.8,698.8,594.5,397.8,241.6,113.9,82.3,4999.9,3877.6,5293.9,2698
1997,10665.3,6700.3,134,680.7,746.3,621.4,619.5,685.9,911.9,723.1,634.1,423.2,274,149.2,97,5174.6,3950.8,5490.7,2749.5
2002,10917.45,6500.93,122.04,527.3,745.63,710.33,642.14,639.47,673.35,845.23,635.85,423.42,270.65,151.73,113.77,5282.63,3803.41,5634.82,2697.53
2007,11030.15,6597.75,105.74,485.23,634.82,734.49,749.31,680.72,653.05,659.98,790.28,490.11,302.18,172.72,139.11,5328.25,3817.48,5701.89,2780.27
2012,11081.51,6442.07,93.88,406.19,575.49,628.06,756.53,775.89,688.15,636.34,614.15,612.02,320.16,182.56,152.64,5341.32,3674.45,5740.19,2767.62
2017,11097.67,6621.3,104.36,424.36,537.86,593.82,656.19,806.09,809.46,692.08,613.8,525.27,451.14,224.86,182.01,5354.29,3707.41,5743.39,2913.89
- chart.jsで色々なグラフを作成
こちらのサイトには以下のような色々な具体例があります。
- csv ファイルを選択して Google Charts を表示
ここでは電力会社が公開する発電種別 csvファイルを読み込んで Google Charts で表示する例を作ってみました。次の様に構成されています。
- csvファイル名を選択して読み込みます
参考サイト
- 読み込んだデータを chartデータとして整形します
参考サイト
- chartデータを Google Chart として表示します
参考サイト1
参考サイト2
* 以下に具体的に表示します
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>File 選択→表示</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script>
var ma = new Array(); var data = new Array(); var res = new Array();
// 1) ファイル名(idname)を選択する
function getValue(idname){
var obj = document.getElementById(idname);
var fname = obj.value;
// 2) 該当名の csvファイルをchartデータとして整形
ma = getCsv( fname );
// 3) 該当データ(ma)をgoogle.chartsで表示
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawVisualization);
}; // getValue(idname) -------------------------
// 2) 該当名(url)の csvファイルをchartデータとして抽出
function getCsv(url){ //CSVファイルを文字列で取得。
var txt = new XMLHttpRequest();
txt.open('get', url, false);
txt.send();
// 改行ごとに配列化
var arr = txt.responseText.split('\n');
// 1次元配列を2次元配列に変換
res = [];
for(var i = 0; i < arr.length; i++){
// 空白行が出てきた時点で終了
if(arr[i] == '') break;
// ","ごとに配列化
res[i] = arr[i].split(',');
for(var i2 = 1; i2 < res[i].length; i2++){
// 数字の場合は「"」を削除 ・・・ 2列目以降に適用
if(res[i][i2].match(/\-?\d+(.\d+)?(e[\+\-]d+)?/)){
res[i][i2] = parseFloat(res[i][i2].replace('"', ''));
}
}
}
return res;
}; // getCsv(url) ---------------------------
// 3) 該当データ(ma)をgoogle.chartsで表示
function drawVisualization() {
data = google.visualization.arrayToDataTable( ma );
var options = {
title : '供給電力推移',
titleTextStyle : { color: '#333', fontSize: 24 },
vAxis: {title: '電力 [MWh]'},
hAxis: {title: '日・時'},
seriesType: 'bars', // 全体は棒グラフ(default='line')
series: {0: { color: '#666',type: "line"},7:{visibleInLegend: false},9:{visibleInLegend: false}}, // 平均だけ折れ線グラフ, 7,9 非表示
legendTextStyle : { color: '#333', fontSize: 12 },
isStacked: true // 積み上げグラフ
};
var chart = new google.visualization.ComboChart(document.getElementById('graph'));
chart.draw(data, options);
}; // end of drawVisualization() -------------------
</script>
<style>
.waku1 { text-align:center; font-size:14px; width:1200px; height:500px; margin:0 auto; padding:0; background:#eee; }
#graph { width:100%; height:99%; }
</style>
</head>
<body>
<div class="waku1">
<h2>選択 csvデータをグラフ表示</h2>
<!-- 1) ファイル名(idname)を取得する -->
<select id="sel1">
<option value="data/kyuden_H30_623-25.csv">九電_H30_623-25</option>
<option value="data/shikoku201704F.csv">四国201704F</option>
<option value="data/kanden2018_4B.csv">関電2018_4B</option>
<option value="data/tepco-2018-624-30.csv">東電-2018-624-30</option>
<option value="data/hokud2018_6B.csv">北電2018_6B</option>
<option value="data/t-hoku20180801-10.csv">東北電20180801-10</option>
</select>
<input type="button" value="→作図" onclick="getValue('sel1');">
<!-- 3) グラフを表示 -->
<div id="graph">ここにグラフを表示</div>
</div>
</body>
</html>
( 7行目) Google Chartsを利用するため、Google Charts のライブラリを読み込みます
(11行目-) 1) ファイル名(idname)を選択し、2) 該当名の csvファイルをchartデータ用に整形し、3) google.chartsで表示します
(17行目) チャートを読み込むために'current'バージョンの corechartパッケージを呼び出します。
(18行目) JavaScript function (drawVisualization) のコールバックを登録します
(21行目) CSVファイルを chartデータ用文字列で取得する functionを記述します
(26行目) 文字列をまず1次元配列に分解します。
(33行目) さらに、2次元配列に分解します。
(37行目) 各行の2列以降のデータを数値データにします。
(44行目) チャートの詳細を指定する JavaScript function (drawVisualization) を記述します。
(52行目) 数値である最初の列データを線グラフで表示し、8(=7+1)番目及び10(=9+1)番目の列を非表示に指定しました。
(54行目) 棒グラフを積み上げで表示するように指定しました。
(56行目) ComboChartを id='graph' 領域に表示するように指定しました。
(70行目) ファイル選択ウインドを用意しました。
(80行目) グラフを表示エリア id='graph' を用意しました。
DATE_TIME,エリア需要,原子力,火力,水力,地熱,バイオマス,太陽光,太陽光抑制量,風力,風力抑制量,揚水,連系線
2018/6/23 0:00,8245,2585,5870,1277,95,27,0,0,105,0,70,-1784
2018/6/23 1:00,7951,2585,5675,1245,95,27,0,0,102,0,0,-1778
2018/6/23 2:00,8027,2585,5914,1239,95,27,0,0,81,0,-54,-1860
2018/6/23 3:00,8381,2585,6195,1286,95,27,0,0,77,0,-26,-1858
2018/6/23 4:00,8699,2578,6466,1305,95,27,0,0,90,0,0,-1862
2018/6/23 5:00,8609,2581,6396,1292,95,27,10,0,82,0,-104,-1770
2018/6/23 6:00,8306,2582,6302,1251,95,27,158,0,73,0,-458,-1724
2018/6/23 7:00,8448,2586,6414,1261,95,27,281,0,69,0,-559,-1726
2018/6/23 8:00,9037,2586,6552,1255,95,27,331,0,77,0,-52,-1834
2018/6/23 9:00,9542,2583,7013,1298,95,27,382,0,68,0,0,-1924
2018/6/23 10:00,9482,2584,6465,1273,95,27,1115,0,45,0,-86,-2036
2018/6/23 11:00,9519,2583,6283,1317,95,27,1416,0,29,0,-195,-2036
2018/6/23 12:00,9293,2583,6263,1273,100,27,1474,0,13,0,-396,-2044
2018/6/23 13:00,9430,2582,6321,1330,100,27,1459,0,23,0,-384,-2028
2018/6/23 14:00,9398,2580,6422,1300,100,27,1017,0,34,0,-58,-2024
2018/6/23 15:00,9241,2582,6562,1299,100,27,688,0,25,0,0,-2042
2018/6/23 16:00,9226,2581,6695,1310,95,27,561,0,15,0,0,-2058
2018/6/23 17:00,9416,2577,7007,1311,95,27,312,0,20,0,147,-2080
2018/6/23 18:00,9484,2575,6728,1352,95,27,90,0,32,0,743,-2158
2018/6/23 19:00,9526,2579,6307,1466,95,27,11,0,41,0,1186,-2186
2018/6/23 20:00,9227,2581,6170,1317,95,27,0,0,24,0,1175,-2162
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
- 参考サイト
|