Chart.js๋ฅผ ์ฌ์ฉํ๋ ์์๋ ์๋์ ๊ฐ๋ค
npm i chart.js
์ฌ์ฉํ๊ณ ์ ํ๋ vue ํ์ผ์ ์ฐจํธ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์๋๋ก chart.js
๋ฅผ import
ํด์ค๋ค.
<template>
<div></div>
</template>
<script>
import { Chart, registerables } from 'chart.js'
Chart.register(...registerables)
</script>
<style>
</style>
registerables๋ ๋ชจ๋ ์ฐจํธ๋ฅผ ๊ฐํธํ๊ฒ ๋ถ๋ฌ์ฌ ์ ์๋๋ก ํจ
js๋ฅผ ์ด์ฉํ์ฌ ์ฝํ
์ธ ๋ฅผ ๊ทธ๋ฆด๋ ์ฌ์ฉํ๋ canvas ํ๊ทธ๋ฅผ ๋ฃ์ด ์ฐจํธ๊ฐ ๋ํ๋ ์ ์๊ฒ ํ๋ค.
html์์๋ canvasํ๊ทธ์ id๋ class์ด๋ฆ์ ๋ฃ์ด์ ์ฌ์ฉํ์ง๋ง vue์์๋ refs
๋ฅผ ์ฌ์ฉํ๋ค.
<template>
<div>
<canvas
ref="MyChart"/>
</div>
</template>
<script>
import { Chart, registerables } from 'chart.js'
Chart.register(...registerables)
</script>
<style>
</style>
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ export default
๊ตฌ๋ฌธ์ ๋ฃ์ด์ค๋ค.
importํ Chart๊ฐ new Chart()๋ก ๋ง๋ค์ด์ง๋ค.
ํจ์๋ฅผ ๋ฐ๋ก ์คํ์ํค๊ธฐ ์ํด์ mounted
์ ๋ง๋ ํจ์๋ฅผ ๋ฃ์ด์ค๋ค.
<template>
<div>
<canvas
ref="MyChart"/>
</div>
</template>
<script>
import { Chart, registerables } from 'chart.js'
Chart.register(...registerables)
export default {
data:() => ({
type: 'bar',
data: {
labels: [ 'Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange' ],
datasets: [{
label: '# of Votes',
data: [ 12, 19, 3, 5, 2, 3 ],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
}),
mounted(){
this.createChart()
},
methods:{
createChart(){
new Chart(this.$refs.MyChart, {
type:'bar',
data:this.data,
options:this.options
})
}
}
}
</script>
<style>
</style>
๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ ์ฐจํธ๊ฐ ๊ทธ๋ ค์ง ๊ฒ์ ํ์ธ ํ ์ ์๋น!
์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฐจํธ์ ๋ฟ๋ฆฌ๋๊ฒ์ ๋ค์ ํฌ์คํ
์์ ์์๋ณด๊ฒ ๋ค ๐ฅ