Chart.jsで描写したグラフを画像としてダウンロードさせる方法
サイト内にChart.jsでグラフを描写し、ボタンやリンクをクリックすることで当該グラフを画像としてダウンロードさせたかった。追加のプラグイン等が必要かと思って調べたところ、標準搭載されているAPIで対応できるみたい。以下に対応方法及びサンプルをメモ。
サンプル
https://taitan916.info/sample/chart.js/image_download/
ページ左下の「ダウンロード」ボタンをクリックするとgraph.pngがダウンロードされる筈。
対応方法
ソースコード
<canvas id="graph"></canvas>
<button id="download">ダウンロード</button>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
const ctx = document.querySelector('#graph').getContext('2d');
const myChart = new Chart(ctx, {
type: 'line',
data: {
labels: ['1月', '2月', '3月', '4月', '5月', '6月'],
datasets: [
{
label: '売り上げ',
data: [100, 200, 80, 160, 90, 110]
}
]
},
options: {
title: {
display: true,
text: '折れ線グラフ'
},
scales: {
y: {
suggestedMin: 0,
suggestedMax: 300
}
}
}
});
const image = myChart.toBase64Image();
document.querySelector('#download').onclick = function() {
const a = document.createElement('a');
a.href = myChart.toBase64Image();
a.download = 'graph.png';
a.click();
}
</script>
リファレンス
.toBase64Image
https://www.chartjs.org/docs/latest/developers/api.html#tobase64image-type-quality
関連記事
-
-
スマホでフォームの画像アップロード部分でカメラを起動させる方法
formの画像アップロード部分で、スマホの場合にカメラで撮影させたい。以下に対応 ...
-
-
フォームからアップロードした画像にPHPで任意のテキストを追加する方法
以前フォームから送られてきた画像に対してサイトロゴみたいなロゴ画像を追加する記事 ...
-
-
画像にマウスを合わせると拡大表示させる「drift」ライブラリの利用方法
amazon等ECサイトで商品画像にマウスを合わせると当該部分が拡大表示されると ...
-
-
フォームからアップロードした画像にPHPでロゴ画像(透かし)を追加する方法
フォームから送られてきた画像に対してサイトロゴみたいなロゴ画像を右下等、指定の位 ...
-
-
バニラJS対応(jQuery非依存)の画像スライダー系プラグイン「Flickity」の利用方法
画像スライダーを設置する場合「slick」プラグインを利用することが多い。ただ、 ...