JavaScript 도넛 차트 만들기[Google Charts]
JavaScript 카테고리의 다른 글
Google Charts는 예전에 포스팅했던 Frappe Charts와 비슷한 기능을 하는 자바스크립트 차트 라이브러리입니다. 사용법도 거의 비슷하고, 구글에서 만든 모듈인지라 문서화가 잘 돼있습니다. Google Charts
JavaScript 차트 라이브러리
세 라이브러리 모두 도넛차트를 지원합니다. 원하는 디자인이나 기능을 따져보고 사용할 라이브러리를 선택하시면 됩니다.
Google Charts 설정 및 파이차트 생성
<html>
<head>
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
// Load the Visualization API and the corechart package.
google.charts.load('current', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(drawChart);
// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawChart() {
// Create the data table.
var data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
data.addRows([
['Mushrooms', 3],
['Onions', 1],
['Olives', 1],
['Zucchini', 1],
['Pepperoni', 2]
]);
// Set chart options
var options = {'title':'How Much Pizza I Ate Last Night',
'width':400,
'height':300};
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<!--Div that will hold the pie chart-->
<div id="chart_div"></div>
</body>
</html>
파이차트를 도넛차트로
파이차트에 pieHole 옵션을 추가해주면 파이차트의 중앙에 구멍이 생겨 도넛차트가 됩니다.
var options = {
pieHole: 0.41
}
커스터마이징
여러가지 옵션을 주면서 차트를 커스터마이징합니다.
var options = {
pieHole: 0.41, // 도넛차트
chartArea: {
/* 차트크기 */
width: 200,
height: 200
},
/* 전체크기 */
width: 300,
height: 300,
/* 배경색 설정 */
backgroundColor: 'whitesmoke',
/* 차트에 레이블 표시 (percentage, value or label)*/
pieSliceText: 'label',
/* 꼬리표 제거 */
legend: 'none'
};
도넛차트 중앙에 이미지 추가
CSS의 position 속성(relative, absolute)를 이용합니다. 차트와 이미지를 감싸는 부모 <div>
태그에 position: relative;
, 이미지 태그에 position: absolute;
의 CSS 설정을 해준 뒤에 위치를 조정하면 됩니다.
#container {
position: relative;
}
#piechart {
width: 900px;
height: 500px;
}
#overlay {
position: absolute;
width: 80px;
height: 80px;
top: 110px;
left: 110px;
border-radius: 40px;
}
완성된 코드 GitHub
<!DOCTYPE html>
<html>
<head>
<title>차트테스트</title>
<meta charset="utf-8">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<style>
#container{
position: relative;
}
#piechart{width: 900px; height: 500px;}
#overlay {
position: absolute;
width: 80px;
height: 80px;
top: 110px;
left: 110px;
border-radius: 40px;
}
</style>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work', 11],
['Eat', 2],
['Commute', 2],
['Watch TV', 2],
['Sleep', 7]
]);
var options = {
pieHole: 0.41, // 도넛차트
chartArea: {
/* 차트크기 */
width: 200,
height: 200
},
/* 전체크기 */
width: 300,
height: 300,
/* 차트에 레이블 표시 (percentage, value or label)*/
pieSliceText: 'label',
/* 꼬리표 제거 */
legend: 'none'
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="container">
<div id="piechart"></div>
<img id="overlay" src="https://ddragon.leagueoflegends.com/cdn/11.4.1/img/champion/Shen.png">
</div>
</body>
</html>
댓글남기기