카테고리 없음

Vue | vue-chart-3 사용하기

삐삐들의 주인 2023. 2. 4. 10:42

Chart.js 만을 사용해서 차트를 사용 해보려고 했는데 

뜨기는 하는데 update가 안되서 한참 고민을 하다가 결국에 vue-chart-3으로 바꿨습니다. 

 

update 도 간단하게 되고 좋네요. 

 


 

설치 

 

yarn add vue-chart-3 chart.js

이미 chart.js 가 깔린 경우는 깔지 않아도됩니다. 

 

 

표 삽입 방법 

<template>
  <LineChart ref="doughnutRef" :chartData="testData" />
</template>

template 을 작성 해줍니다. 

 

import { defineComponent } from 'vue';
import { DoughnutChart } from 'vue-chart-3';
import { Chart, registerables } from "chart.js";

Chart.register(...registerables);

export default defineComponent({
  name: 'Home',
  components: { DoughnutChart },
  setup() {
    const testData = {
      labels: ['Paris', 'Nîmes', 'Toulon', 'Perpignan', 'Autre'],
      datasets: [
        {
          data: [30, 40, 60, 70, 5],
          backgroundColor: ['#77CEFF', '#0079AF', '#123E6B', '#97B0C4', '#A5C8ED'],
        },
      ],
    };

    return { testData };
  },
});

스크립트 쪽에 이렇게 삽입해주시면 됩니다. 

이 부분은 예시로 나와있기 때문에 예시를 참고하셔도 됩니다. 

 

아마 설치만 제대로 되었다면 여기서 표는 정상적으로 나올 것입니다. 

 

 


 

문제는 update 를 했을때 바로 적용이 되어야 한다는 부분입니다. 

<button @click="updateData">버튼</button>

템플릿에 해당 부분을 추가해줍니다. 

 

setup() {
    const data = ref([30, 40, 60, 70, 5]);
    const doughnutRef = ref();

    const options = ref({
      responsive: true,
      plugins: {
        legend: {
          position: 'top',
        },
        title: {
          display: true,
          text: 'Chart.js Doughnut Chart',
        },
      },
    });

    const testData = computed(() => ({
      labels: ['Paris', 'Nîmes', 'Toulon', 'Perpignan', 'Autre'],
      datasets: [
        {
          data: data.value,
          backgroundColor: ['#77CEFF', '#0079AF', '#123E6B', '#97B0C4', '#A5C8ED'],
        },
      ],
    }));

    function updateData() {
      //어떠한 작업 
      // data.value = ??? 
    }

    return { testData, updateData, doughnutRef, options };
  },

setup() 부분을 변경해줬습니다.

const data = ref([30, 40, 60, 70, 5]);

이건 기존에 setup함수 내부에 있는 testData 의 data 부분을 분리한거라고 보시면 됩니다. 

만약 데이터를 분리한다면 data와 동일한 방법으로 분리해주시면 됩니다. 

 

ref 안에 data의 값을 넣어준 경우 이는 data.value 로 접근이 됩니다. 

 

클릭을 했을 때 수정이 되게 하려면 updateData 의 함수 부분만 바꿔주면 됩니다. 

클릭 함수명을 바꿔도 제일 아랫줄의 return 부분의 함수명만 제대로 바꿔주면 정상동작 합니다.

 

 

 

혹시나 저처럼 모르실 분을 위해 

표 상단에 

이건 범례라고 한다네요. 

   const options = ref({
      responsive: true,
      plugins: {
        legend: {
          display : false,
        },

      },
    });

이렇게 추가해주면 사라집니다. 

 

 

https://vue-chart-3.netlify.app/

 

vue-chart-3

📊 A simple wrapper around Chart.js 3 for Vue 2 & 3

vue-chart-3.netlify.app

해당 링크에서 참고를 하면 됩니다.