[ Chart.js ] javascript 를 이용하여 2가지의 차트를 한 canvas에 그려내기 | how to draw two graph in one canvas?
javascript 기반의 Chart.js를 이용하여 한 캔버스(canvas)내에 2개 이상의 그래프를 그리려고 한다.
꺾은선(line)과, 바(bar) 두 가지 형태이다.
데이터는 axios를 이용하여 json 형태로 받아왔다.
음... 대충 아래와 같긴 한데,, 보기가 너무 불편하고 그러니, 요점만 작성하도록 하겠다.
이렇게 호출 시, canvas 가 동작한다.
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<canvas id="generalWithExposeList"></canvas>
<script>
.then(function(response) {
labelsAndDatas(responseData1, response.data)
})
function labelsAndDatas (responseData1, responseData2) {
let labels = []
let labelValues = []
let labels2 = []
let labelValues2 = []
console.log(responseData1)
for(i=0; i<responseData1.length; i++){ // 생산량 리스트 : 날짜, 생산량 출력
labels.unshift(responseData1[i].day.substr(5))
labelValues.unshift(responseData1[i].day_total)
}
console.log(labels)
console.log(labelValues)
for(i=0; i<responseData2.length; i++){ // 출하 리스트 : 출하량 출력
labels2.push(responseData2[i].day.substr(5))
labelValues2.push(responseData2[i].day_total)
}
console.log(labels2)
console.log(labelValues2)
drawChart (labels, labelValues, labelValues2) // 호출
}
function drawChart (labels, labelValues, labelValues2) {
let data = {
labels: labels,
datasets: [
{
type: 'line',
yAxesID: 't',
label: '일자별 생산량',
backgroundColor: 'rgb(255, 99, 132)',
borderColor: 'rgb(255, 99, 132)',
data : labelValues
},
{
type: 'bar',
label: '일자별 출하량',
backgroundColor: 'rgb(54, 162, 235)',
borderColor: 'rgb(54, 162, 235)',
data : labelValues2
}
]}
const generalWithExposeListConfig = {
data: data,
options: {}
}
const generalWithExposeList = new Chart(
document.getElementById('generalWithExposeList'),
generalWithExposeListConfig
);
}function labelsAndDatas (responseData1, responseData2) {
let labels = []
let labelValues = []
let labels2 = []
let labelValues2 = []
console.log(responseData1)
for(i=0; i<responseData1.length; i++){ // 생산량 리스트 : 날짜, 생산량 출력
labels.unshift(responseData1[i].day.substr(5))
labelValues.unshift(responseData1[i].day_total)
}
console.log(labels)
console.log(labelValues)
for(i=0; i<responseData2.length; i++){ // 출하 리스트 : 출하량 출력
labels2.push(responseData2[i].day.substr(5))
labelValues2.push(responseData2[i].day_total)
}
console.log(labels2)
console.log(labelValues2)
drawChart (labels, labelValues, labelValues2) // 호출
}
function drawChart (labels, labelValues, labelValues2) {
let data = {
labels: labels,
datasets: [
{
type: 'line',
yAxesID: 't',
label: '일자별 생산량',
backgroundColor: 'rgb(255, 99, 132)',
borderColor: 'rgb(255, 99, 132)',
data : labelValues
},
{
type: 'bar',
label: '일자별 출하량',
backgroundColor: 'rgb(54, 162, 235)',
borderColor: 'rgb(54, 162, 235)',
data : labelValues2
}
]}
const generalWithExposeListConfig = {
data: data,
options: {}
}
const generalWithExposeList = new Chart(
document.getElementById('generalWithExposeList'),
generalWithExposeListConfig
);
}
</script>
chart.js는 이쁘다..ㅎㅎ
[ JavaScript ] media query 사용하는 방법 , 반응형 웹 디자인의 기초. 화면의 크기 및 영역을 제어하기, how to control elements when resize the screen (0) | 2021.12.01 |
---|---|
[ Chart.js ] chart.js 차트 크기 지정 방법, how to resize canvas with chart.js? (0) | 2021.12.01 |
[ JavaScript ] 배열에 앞에, 뒤에 데이터 삽입하는 방법 (0) | 2021.11.30 |
[ JavaScript ] Chart.js 사용 예시 (0) | 2021.11.29 |
[ JavaScript, PHP ] JavaScript에서 php의 json 데이터 비동기 통신으로 출력하는 방법 (0) | 2021.11.29 |
댓글 영역