webpackでローカルサーバーを起動
ソース変更時に変更内容をリアルタイムにブラウザに反映する
以下の3つを使います。
yarn
webpack
chart.js
上記3つを使って、jsでグラフを描画するコードを書いて動作を確認していきます。
yarnとは?webpackとは?という方は以下の記事をご参照ください。
まずはソースコードの準備から始めていきます!
まずはソースコードの準備をしていきます。
最終的なフォルダ構成は以下の通りです。
├── dist // index.htmlを格納
├── node_modules // yarnでインストールしたモジュールが入る
├── package.json // パッケージを管理
├── src // 作成するjsファイルを入れるディレクトリ
├── webpack.config.js // webpackの設定ファイル
└── yarn.lock // インストールしたパッケージ情報が書かれたファイル
まず、yarn initで初期化処理を行い、package.jsonを生成します。
// 実行するコマンド
yarn init
上記コマンドを実行すると、ターミナル上で色々聞かれますが、全てエンターキーを押せばOKです。
yarnでchart.jsをインストールします。
// 実行するコマンド
yarn add chart.js
まず、HTML格納用のディレクトリを作成します。
// 実行するコマンド
mkdir dist
次にdist直下にindex.htmlというファイルを作成します。
index.htmlに記載する内容は以下の通りです。
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<title>Chart.js</title>
</head>
<body>
<div style="width:50%;">
<canvas id="myChart" width="400px" height="400px"></canvas>
</div>
<script src='main.js'></script>
</body>
</html>
chart.jsのグラフを描画するjavascriptファイルを作成します。
まず、javascript格納用のディレクトリを作成します。
// 実行するコマンド
mkdir src
次にsrc直下にindex.jsというファイルを作成します。
index.jsに記載する内容は以下の通りです。
import Chart from 'chart.js/auto';
const ctx = document.getElementById('myChart');
const chart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['data1', 'data2', 'data3'],
datasets: [{
label: 'chart label',
data: [1, 2, 3],
}]
}
})
// 実行するコマンド
yarn add webpack webpack-cli webpack-dev-server --dev
webpackの設定ファイル「webpack.config.js」を作成します。
「webpack.config.js」に記載する内容は以下の通りです。
module.exports = {
mode: "development",
devServer: {
static: "dist",
open: true
}
};
以下のコマンドを実行します。
// 実行するコマンド
yarn run webpack-dev-server
以下のようにブラウザでグラグが描画されていることが確認できます。
chartjs
src/index.jsのソースコードを変更します。
6行目のグラフタイプを変更して保存します。
保存後、自動的にブラウザのリロードが走り、グラフが以下のように線グラフに変更されます。変更内容が自動的にブラウザに反映されることが確認できました!
chartjs-line
実際に動かすことで、webpackの理解が深まったかなと思います。
]]>yarnとwebpackを使ってchart.jsでグラフを書いてみます。
npmを使ったバージョンの記事もありますので、よろしければご参照ください。
yarnやwebpackの理解に役立てばと思います。
まずは用語説明から入っていきます。
本記事で扱う3つの用語について説明していきます。
yarn
webpack
Chart.js
基本的なフォルダ構成は以下のようになります。
├── dist // ビルドしたファイルが入るディレクトリ
├── index.html // 今回、chart.jsを表示させる用のHTMLファイル
├── node_modules // yarnでインストールしたモジュールが入る
├── yarn.lock // インストールしたパッケージ情報が書かれたファイル
├── package.json // パッケージを管理
└── src // ビルド前のjsファイルをを入れるディレクトリ
以下のコマンドでインストールします
// 実行するコマンド
sudo npm install -g yarn
まず、yarn initで初期化処理を行い、package.jsonを生成します。
// 実行するコマンド
yarn init
上記コマンドを実行すると、ターミナル上で色々聞かれますが、全てエンターキーを押せばOKです。
以下のコマンドでwebpackをインストールします
// 実行するコマンド
yarn add -D webpack webpack-cli
yarnでinstallするときは、installではなくaddと書きます
JavaScriptを変更した場合に自動でビルドするに設定します
// 実行するコマンド
npx webpack --watch
JavaScriptの変更を自動で検知してビルドしてくれるという便利機能。使っときましょ!
yarnでchart.jsをインストールします。
// 実行するコマンド
yarn add chart.js
「index.html」を作成します。
「index.html」の中身は以下参照
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<title>Chart.js</title>
</head>
<body>
<div style="width:50%;">
<canvas id="myChart" width="400px" height="400px"></canvas>
</div>
<script src='dist/main.js'></script>
</body>
</html>
chart.jsのグラフを描画するjavascriptファイルを作成します。
まず、javascript格納用のディレクトリを作成します。
// 実行するコマンド
mkdir src
次にsrc直下にindex.jsというファイルを作成します。
index.jsに記載する内容は以下の通りです。
import Chart from 'chart.js/auto';
const ctx = document.getElementById('myChart');
const chart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['data1', 'data2', 'data3'],
datasets: [{
label: 'chart label',
data: [1, 2, 3],
}]
}
})
index.htmlにアクセスし、chart.jsの画像が表示されればOKです。
以上、yarnとwebpackを使ってchart.jsでグラフ描画でしたー
npmとほとんど同じですね。yarnとnpmを比べると以下のメリットがあるので、yarnを使っていくほうが良いかと思います!
yarnを使った場合の記事もありますので、yarnを使いたい方は以下の記事をご参照ください。(npmとyarnどちらを使うかで悩んだら、yarnを選択した方が良いです)
まずは用語説明からです。
本記事で扱う3つの用語について説明していきます。
npm
webpack
Chart.js
基本的なフォルダ構成は以下のようになります。
├── dist // ビルドしたファイルが入るディレクトリ
├── index.html // 今回、chart.jsを表示させる用のHTMLファイル
├── node_modules // npmでインストールしたモジュールが入る
├── package-lock.json // インストールしたパッケージ情報が書かれたファイル
├── package.json // パッケージを管理
└── src // ビルド前のjsファイルをを入れるディレクトリ
早速グラフを描いていきます。
まず、npm initで初期化処理を行い、package.jsonを生成します。
// 実行するコマンド
npm init
上記コマンドを実行すると、ターミナル上で色々聞かれますが、全てエンターキーを押せばOKです。
以下のコマンドでwebpackをインストールします
// 実行するコマンド
npm install -D webpack webpack-cli
JavaScriptを変更した場合に自動でビルドするに設定します
// 実行するコマンド
npx webpack --watch
npmでchart.jsをインストールします。
// 実行するコマンド
npm install chart.js
「index.html」を作成します。
「index.html」の中身は以下参照
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<title>Chart.js</title>
</head>
<body>
<div style="width:50%;">
<canvas id="myChart" width="400px" height="400px"></canvas>
</div>
<script src='dist/main.js'></script>
</body>
</html>
chart.jsのグラフを描画するjavascriptファイルを作成します。
まず、javascript格納用のディレクトリを作成します。
// 実行するコマンド
mkdir src
次にsrc直下にindex.jsというファイルを作成します。
index.jsに記載する内容は以下の通りです。
import Chart from 'chart.js/auto';
const ctx = document.getElementById('myChart');
const chart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['data1', 'data2', 'data3'],
datasets: [{
label: 'chart label',
data: [1, 2, 3],
}]
}
})
index.htmlにアクセスし、chart.jsの画像が表示されればOKです。
chartjs
実際にnpm/webpackの環境を作って、動かすことで、npm/webpackの理解が深まったかなと思います
]]>コピペで実際にグラフ描画まで行けます。
インストールからプログラムの書き方まで記載しています。
完成イメージは以下となります。
棒と折れ線の複合グラフを描画していきます。
Vueのインストールとプロジェクトの作成をして、Vueの表示確認まで行います。
Vueのインストール
プロジェクトの作成
Vueの表示確認
まずはvueをインストールします。
npm install -g @vue/cli
次にプロジェクトの作成をします。
vue create chart
「chart」の部分がプロジェクト名です。
上記のように表示されます。TypeScript を利用するために 「Manually select features」 を選択します。
TypeScriptを選択(上下キーでカーソル移動してスペースで選択)します。
あとはお好みで選択してプロジェクトを作成する
cd <プロジェクト名> npm run serve
上記コマンド実行後、「http://localhost:8080/」でアクセスできます。
アクセス時すると、以下のような画面が表示されます。
次はchartjsのインストールをします。
次に以下コマンドでchartjsをインストールする
npm install vue-chartjs chart.js npm install @types/chart.js -D
環境は整ったのでvueファイルを修正・作成していきます!
まずsrcフォルダ内の「App.vue」の修正。「src/App.vue」の記述を全て削除し、以下の通り記載します。
<template> <div id="app"> <HelloWorld/> </div> </template> <script lang="ts"> import { Component, Vue } from 'vue-property-decorator'; import HelloWorld from './components/HelloWorld.vue'; @Component({ components: { HelloWorld, }, }) export default class App extends Vue {} </script>
次に「App.vue」から呼ばれる「src/components/HelloWorld.vue」ファイルを修正します。
「src/components/HelloWorld.vue」の記述を全て削除し、以下の通り記載します。
<template> <div class="chart-container"> <Chart :chartData="chartData" :chartOptions="chartOptions" :chartStyles="chartStyles" /> </div> </template> <script lang="ts"> import { Component, Vue } from 'vue-property-decorator'; import { ChartData, ChartOptions } from "chart.js"; import Chart from "./Chart.vue"; @Component({ components: { Chart } }) export default class HelloWorld extends Vue { // チャートのオプション chartOptions: ChartOptions = { maintainAspectRatio: false, tooltips: { mode: 'index' }, scales: { yAxes: [ { id: "1", position: "left", }, { id: "2", position: "right" } ] } }; // チャートのスタイル: <canvas>のstyle属性として設定 chartStyles = { height: "100%", width: "100%" }; // チャートのデータ chartData: ChartData = { labels: ['ラベル1','ラベル2','ラベル3','ラベル4'], datasets: [ { type: "bar", label: "説明1", data: [1000,2000,1500,1750], fill: false, lineTension: 0, borderColor: "#00008b", yAxisID:"1" // Y軸のIDを指定 }, { type: "line", label: "説明2", data: [1,2,5,2], fill: false, lineTension: 0, borderColor: "#ff0000", yAxisID:"2" // Y軸のIDを指定 } ] }; } </script>
最後に「src/components/HelloWorld.vue」から呼ばれる「src/components/Chart.vue」ファイルを作成します。
このファイルはchartjs描画用コンポーネントで、他のvueからでも、必要な値「chartOptions」「chartStyles」「chartData」を渡してあげればグラフの描画が可能となります。
<script lang="ts"> import { Component, Mixins, Prop, Watch } from "vue-property-decorator"; import Chart from "chart.js"; import { Line, Bar,mixins } from "vue-chartjs"; @Component({}) export default class LineChartComponent extends Mixins(Line, Bar, mixins.reactiveProp) { @Prop() chartData!: Chart.ChartData; @Prop() chartOptions!: Chart.ChartOptions; @Watch('chartData') onChartDataChanged() { this.load(); } mounted() { this.renderChart(this.chartData, this.chartOptions); } load() { this.renderChart(this.chartData, this.chartOptions); } } </script>
Vuejs × TypeScriptの環境でchartjsでグラフ描画ができました!
環境構築:Vuejs × TypeScript
chartjsで棒と折れ線の複合グラフを描画
エラー発生時のchartjsのバージョンは2系です。
エラーが発生する該当のソースコードは以下となります。
chartData = { labels: ['ラベル1','ラベル2','ラベル3'], datasets: [ { type: "line", label: "ラベル名", data: [1,2,3], fill: false, tension: 0, // ここが誤り borderColor: "#00008b", } ] };
「tension」が誤りで以下のように「lineTension」とする必要があるようです。
chartData = { labels: ['ラベル1','ラベル2','ラベル3'], datasets: [ { type: "line", label: "ラベル名", data: [1,2,3], fill: false, lineTension: 0, // ここを修正する borderColor: "#00008b", } ] };
以下公式ページを見ると以下のことがわかります。
chartjsのバージョン2系:lineTensionというプロパティ名が正しい
chartjsのバージョン3系:tensionというプロパティ名が正しい
→2系では「lineTension」というプロパティがあったが、3系では無くなり、代わりに「tension」というプロパティが追加されたようです。
→2系では「lineTension」というプロパティを使う必要がある!
chartjs2系の公式ページ:
chartjs3系の公式ページ: