個人的に作成しているLaravelアプリケーションで、canvasを使って円グラフを描画しているのですが、ジャギが出て汚いのでvue-chartjsを使った方法に切り替える事にした。
導入方法はサイトを見ていただくとして、実際に書いたコードがこんな感じ。extends
でコンポーネントを継承してグラフの形式を指定している。renderChart()
にchartjsの仕様に沿ってdata
とoptions
を渡せば良いっぽい。
<script> import {Pie} from 'vue-chartjs' export default { extends : Pie, // グラフの形式 props : { val1 : { type: Number, }, val2 : { type: Number, }, }, computed: { isEmpty() { return this.val1 === 0 && this.val2 === 0; }, data() { const data = !this.isEmpty ? [ this.val1, this.val2 ] : [1, 1]; return { labels : [ '選択肢A', '選択肢B' ], datasets: [{ label : '# of Votes', data, backgroundColor: [ 'rgb(227, 64, 64)', 'rgb(64, 64, 227)', ], borderWidth : 1 }] } }, options() { return { } } }, mounted() { this.renderChart(this.data, this.options) } } </script> <style> </style>
こんな感じになる。
chartjsを使ったことがあるなら、vue-chartjsもすぐ使えると思います。
vue-chartjsの場合、dataの動的な変更にも対応している様です。
Webエンジニアをやっています
UX/UIデザインからプログラミング、DB設計、SEO、インフラ構築など幅広く対応してます
PHP/PHPUnit/Laravel/Vue/Nuxt/Docker/Terraform
ご連絡はTwitterのDMまで。