Vuejs × TypeScriptな環境でchartjsを使ってグラフを描画してみます。
コピペで実際にグラフ描画まで行けます。

インストールからプログラムの書き方まで記載しています。
完成イメージは以下となります。

棒と折れ線の複合グラフを描画していきます。
- 棒と折れ線の複合グラフを描画
- 使うもの
- Vuejs
- TypeScript
- chartjs
vueプロジェクトの作成
Vueのインストールとプロジェクトの作成をして、Vueの表示確認まで行います。
Vueのインストール
プロジェクトの作成
Vueの表示確認
vueインストール
まずはvueをインストールします。
npm install -g @vue/cli
vueプロジェクトの作成
次にプロジェクトの作成をします。
vue create chart
「chart」の部分がプロジェクト名です。

上記のように表示されます。TypeScript を利用するために 「Manually select features」 を選択します。

TypeScriptを選択(上下キーでカーソル移動してスペースで選択)します。
あとはお好みで選択してプロジェクトを作成する
vueプロジェクトの起動
cd <プロジェクト名> npm run serve
上記コマンド実行後、「http://localhost:8080/」でアクセスできます。
アクセス時すると、以下のような画面が表示されます。


次はchartjsのインストールをします。
vue-chartjsのインストール
次に以下コマンドでchartjsをインストールする
npm install vue-chartjs chart.js npm install @types/chart.js -D
vueファイルの作成

環境は整ったので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>完成! Vue・TypeScript・chartjsを使用したグラフ

まとめ
Vuejs × TypeScriptの環境でchartjsでグラフ描画ができました!
環境構築:Vuejs × TypeScript
chartjsで棒と折れ線の複合グラフを描画


