質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

3317閲覧

Chart.jsのサンプルプログラムを実行したところ、エラーが出てしまいました。

Zu_Chan

総合スコア14

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/09/24 05:39

###実現したいこと
https://algorithm.joho.info/programming/javascript/chartjs-csv-data-graph/
上記のWebサイトのサンプルプログラムを動作させたところ、動作せず、要素を確認した所以下のエラーがでていました。
undefined is not an object (evaluating 'array.length')
array.length周辺を見ましたが、おかしいと思う場所は見当たりませんでした。

どなたか助言をいただけるとうれしいです。

###環境
OS XのMAMPで動作をさせています。

###サンプルソース

HTML

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>TEST</title> 6 <script type="text/javascript" src="main.js"></script> 7 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.4/Chart.min.js"></script> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 <link rel='stylesheet' href='style.css' type='text/css'/> 10 </head> 11 <body> 12 <div class="header"> 13 <h1 class="logo">Raspi LO</h1> 14 <div class="nav" id="currentTime"></div> 15 <div class="nav" id="currentTemp"></div> 16 <div class="nav" id="currentHumidity"></div> 17 <div class="nav" id="currentAirPressure"></div> 18 <div class="nav" id="currentPm25"></div> 19 </div> 20 <div class="wrapper"> 21 <div class="main"> 22 <div class="box"> 23 <h2>Temperature [℃]</h2> 24 <canvas id="temperature" class="graph"></canvas> 25 </div> 26 <div class="box"> 27 <h2>Humidity [%]</h2> 28 <canvas id="humidity" class="graph"></canvas> 29 </div> 30 <div class="box"> 31 <h2>Air Pressure [Pa]</h2> 32 <canvas id="airPressure" class="graph"></canvas> 33 </div> 34 <div class="box"> 35 <h2>PM2.5 [μg/m3]</h2> 36 <canvas id="pm25" class="graph"></canvas> 37 </div> 38 </div> 39 </div> 40 </body> 41</html>

JavaScript

1 2// CSV to Array 2D 3var csvToArray = function(path) { 4 var csvData = new Array(); 5 var data = new XMLHttpRequest(); 6 data.open("GET", path, false); 7 data.send(null); 8 var LF = String.fromCharCode(10); 9 var lines = data.responseText.split(LF); 10 for (var i = 0; i < lines.length;++i) { 11 var cells = lines[i].split(","); 12 if( cells.length != 1 ) { 13 csvData.push(cells); 14 } 15 } 16 return csvData; 17} 18 19var getDateData = function(date, src) { 20 var dst = new Array(); 21 for(var i = 0; i < src.length; i++) 22 if (src[i][0].indexOf(date) !== -1) { 23 dst.push(src[i]); 24 } 25 return dst; 26}; 27 28var arrayT = function(array){ 29 var arrayT = []; 30 for (var i = 0; i < array.length; i++) { 31 for (var j = 0; j < array[i].length; j++) { 32 (i > 0)? arrayT[j].push(array[i][j]) :arrayT[j] = [array[i][j]]; 33 } 34 } 35 return arrayT; 36} 37 38var replaceElement = function(array, before, after) { 39 for(var i=0; i < array.length; i++){ 40 array[i] = array[i].replace(before, after); 41 } 42 return array; 43} 44 45var getDate = function(day) { 46 var date = new Date(); 47 date.setDate(date.getDate() + day); 48 var year = date.getFullYear(); 49 var month = date.getMonth() + 1; 50 var day = date.getDate(); 51 return String(year) + "-" + String(month) + "-" + String(day); 52} 53 54var drawGraph = function(id, today, yesterday, labels){ 55 var ctx = document.getElementById(id).getContext('2d'); 56 57 var line1 = { 58 label:'Today', 59 data:today, 60 fill: false, 61 lineTension: 0, 62 backgroundColor: "#DE4E33", 63 borderColor: "#DE4E33", 64 pointHoverBackgroundColor: "#DE4E33", 65 pointHoverBorderColor: "#DE4E33", 66 }; 67 68 var line2 = { 69 label:'Yesterday', 70 data:yesterday, 71 fill: false, 72 lineTension: 0, 73 backgroundColor: "#97DBF2", 74 borderColor: "#97DBF2", 75 pointHoverBackgroundColor: "#97DBF2", 76 pointHoverBorderColor: "#97DBF2", 77 } 78 // ラベル(横軸) 79 var label = labels; 80 var xAxes = [{ 81 gridLines:{ 82 color: "#5f5f5f", 83 }, 84 ticks: { 85 fontColor: "#aaa", 86 fontSize: 12 87 } 88 }] 89 var yAxes = [{ 90 gridLines:{ 91 color: "#5f5f5f", 92 }, 93 ticks: { 94 fontColor: "#aaa", 95 fontSize: 15, 96 } 97 }] 98 var scales = {xAxes, yAxes}; 99 var legend = {labels:{fontColor:"#eee", fontSize: 15}, position:"bottom"}; 100 // グラフ全体の設定 101 var option = {scales, legend}; 102 103 // データの設定 104 var config = { 105 type: 'line', 106 data: { labels: label, datasets: [line1, line2]}, 107 options: option, 108 109 } 110 var myChart = new Chart(ctx, config); 111 112}; 113 114window.onload = function () { 115 var csvData = csvToArray("data.csv"); 116 var today = "2016-12-12 "; 117 var yesterday = "2016-12-11 "; 118 //var today = getDate(0); 119 //var yesterday = getDate(-1); 120 var dataToday = getDateData(today, csvData); 121 var dataTodayT = arrayT(dataToday); 122 var label = replaceElement(dataTodayT[0], today, ""); // 0:00, 1:00, 2:00 123 var dataYesterday = getDateData(yesterday, csvData); 124 var dataYesterdayT = arrayT(dataYesterday); 125 drawGraph('temperature', dataTodayT[1], dataYesterdayT[1], label); 126 drawGraph('humidity', dataTodayT[2], dataYesterdayT[2], label); 127 drawGraph('airPressure', dataTodayT[3], dataYesterdayT[3], label); 128 drawGraph('pm25', dataTodayT[4], dataYesterdayT[4], label); 129}; 130

CSS

1@charset "UTF-8"; 2body { 3 background: #222; 4 color: #fff; 5 margin: 0; 6 padding: 0; 7 line-height: 1; 8} 9.header { 10 text-align: center; 11 padding: 0.5em 0.5em 0.5em 0.5em; 12 background: #150D0F; 13 height: 40px; 14} 15.logo { 16 width: 400px; 17 font: 22px "Trebuchet MS", Arial, Helvetica, sans-serif; 18 color: #eee; 19 float: left; 20} 21.nav { 22 width: 100px; 23 height: 40px; 24 padding-top: 5px; 25 list-style-type: none; 26 text-align: center; 27 float: left; 28 overflow: hidden; 29} 30.nav a { 31 font: 20px "Trebuchet MS", Arial, Helvetica, sans-serif; 32 font-weight: 700; 33 color: #ba9b89; 34 text-decoration: none; 35} 36.nav:hover { 37 background: #36281f; 38} 39.wrapper { 40 clear: left; 41 overflow: hidden; 42 margin: 0 auto; 43 padding: 0; 44} 45.main { 46 width: 100%; 47 float: left; 48} 49h2 { 50 border-left: 10px solid #008c00; 51 color: #eee; 52 padding: 5px 20px; 53 font-size:18px; 54} 55.graph { 56 border: solid 1px #666; 57 background: #333; 58} 59.box { 60 width: 400px; 61 padding-right: 20px; 62 float: left; 63} 64 65/* スマホ用(画面サイズ450px以下) */ 66 67@media screen and (max-width:450px) { 68 body { 69 font-size: 13px; 70 } 71 .logo { 72 width: 200px; 73 float: none; 74 } 75 .nav { 76 display: none; 77 } 78 .wrapper { 79 width: auto; 80 padding: 0 10px; 81 } 82 .main { 83 width: auto; 84 padding: 0; 85 border: none; 86 } 87 88 .main{ 89 float: none; 90 } 91} 92

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
読み込んでいる.csvが私個人で使用しているものに差し替わっていました。
ご迷惑をおかけしました。

投稿2017/09/24 09:10

Zu_Chan

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問